使用DataSet时出现问题

时间:2011-05-20 08:45:34

标签: c# mysql ado.net dataset

我首先在项目名称DataSet中手动创建了recvd.xsd,其中包含recvd.xss。在我的按钮点击事件中,我完成了以下编码。

try 
{
    DataSet recvd_REPORT = new DataSet();
    DataTable REPORT = new DataTable();
    String dd_webCofig = ConfigurationManager.ConnectionStrings["server2"].ConnectionString;
    OdbcConnection ddlistconn = new OdbcConnection(dd_webCofig);
    ddlistconn.Open();

    REPORT = recvd_REPORT.Tables["REPORT"];
    DataColumn myDataColumn = new DataColumn();
    myDataColumn.DataType = typeof(System.Int32);
    myDataColumn.ColumnName = "RECEIVED";
    myDataColumn.ReadOnly = false;
    myDataColumn.Unique = false;
    // Add the Column to the DataColumnCollection.
    REPORT.Columns.Add(myDataColumn);

    string query = "SELECT case_no as \"RECEIVED\" from dcpanaji.Civil_t where dt_regis > '" + txtStartDate.Text + "' AND dt_regis < '" + txtEndDate.Text + "' AND court_no = " + DropDownList1.SelectedItem + "";
    Response.Write(query);
    OdbcCommand cmd = new OdbcCommand(query, ddlistconn);
    OdbcDataReader loginMyReader = cmd.ExecuteReader();

    OdbcDataAdapter adptr = new OdbcDataAdapter(query, ddlistconn);
    adptr.Fill(REPORT);

    ddlistconn.Close();   
}
catch (Exception ex)
{
    Response.Write(ex.Message);
}

我收到错误

  

对象引用未设置为对象的实例。

如果我从SQL查询中删除as \"RECEIVED\"并执行我的SQL查询,则查询结果如下(根据用户输入而有所不同)

200200000452011 ......,n个12位数字。

请帮我删除错误,说明为什么我无法绑定到DataTable。

我在执行Response.Write(query);之前收到错误,为什么会出现这个问题?

我删除了try catch块,现在我得到错误

enter image description here

4 个答案:

答案 0 :(得分:0)

在您的SQL而不是“RECEIVED”中,您是否尝试过RECEIVED,没有投票?

答案 1 :(得分:0)

SELECT case_no as `RECEIVED` ...

或只是

SELECT case_no as RECEIVED ...

无论如何,正确的DataSet填充代码应如下所示:

DataSet ds = new DataSet();
using (OdbcConnection connection = new OdbcConnection(connectionString))
using (OdbcCommand command = new OdbcCommand(sqlQuery, connection)
using (OdbcDataAdapter adapter = new OdbcDataAdapter(command)
{
    adapter.Fill(ds);
}

答案 2 :(得分:0)

您无需在查询中使用\“RECEIVED \”,您可以使用如下。

query = "SELECT case_no as [RECIEVED] from dcpanaji.Civil_t where dt_regis > '" + txtStartDate.Text + "' AND dt_regis < '" + txtEndDate.Text + "' AND court_no = " + DropDownList1.SelectedItem + "";

答案 3 :(得分:0)

您可以像

一样编写查询
query = "SELECT case_no as RECIEVED from dcpanaji.Civil_t where dt_regis > '" + txtStartDate.Text + "' AND dt_regis < '" + txtEndDate.Text + "' AND court_no = " + DropDownList1.SelectedItem + "";

检查......