【问题标题】:Problem in using DataSet使用数据集的问题
【发布时间】:2011-08-29 11:52:46
【问题描述】:

我首先在我的项目名称recvd.xsd 中手动创建了一个DataSet,并具有相应的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 块,现在我得到了错误

【问题讨论】:

  • 是的,我现在这样做了,但仍然收到相同的错误 Object reference not set to an object of an instance。
  • 你的错误在哪个字符串中?
  • 您使用什么数据库引擎? SQL 服务器? MySQL?还有吗?
  • @Ajay, abatishchev 我在 Response.Write 之前遇到错误

标签: c# mysql ado.net dataset


【解决方案1】:

试试

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);
}

【讨论】:

  • 这可能是正确的,以防查询错误,但在此之前出现错误,因为我的 Response.Write 没有被执行。
  • 是的,您的代码工作正常,没有问题,我正在设计 REPORT,我手动设计的 DataSet 应该保存结果以及我拖到报告中的特定列。如何检查数据集内容?
  • @Ishan: REPORT = recvd_REPORT.Tables["REPORT"]; 可以在 Fill() 之前返回 null,所以 REPORT.Columns.Add(myDataColumn); 会抛出异常。检查那个。附言不幸的是,我在工作时间无法访问电子邮件
【解决方案2】:

在您的 SQL 中,而不是 \"RECIEVED\" 您是否尝试过只收到,没有引号?

【讨论】:

  • 这可能是正确的,以防查询错误,但在此之前出现错误,因为我的 Response.Write 没有被执行。
  • 如果你的 response.write 没有被执行,那么在这个 try 部分之前的东西已经失败了。
  • 尝试之前没有什么。单击按钮时,只有我在上面发布的 try catch。上面或下面没有其他代码。
【解决方案3】:

你不需要在查询中使用“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 + "";

【讨论】:

  • 这可能是正确的,以防查询错误,但在此之前出现错误,因为我的 Response.Write 没有被执行。
【解决方案4】:

你可以像这样写查询

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 + "";

这样检查....

【讨论】:

  • 这可能是正确的,以防查询错误,但在此之前出现错误,因为我的 Response.Write 没有被执行。
猜你喜欢
  • 2011-08-31
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多