在asp中获取datarow时,对象引用未设置异常

时间:2016-03-20 04:58:18

标签: c# asp.net datatable datarow

Object reference not set to an instance of an object获取DataRow时发生

DataTable异常。任何人都可以为此提供解决方案。

我正在尝试的代码如下所示:

OleDbDataAdapter da = new OleDbDataAdapter("select * from input_alignments", cn);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable table = ds.Tables["input_alignments"];
foreach (DataRow row in table.Rows)//here exception occur
{
sb.Append(row["word1"].ToString();
}

异常的原因是什么?

2 个答案:

答案 0 :(得分:2)

由于您的查询只返回一个结果集,因此您可以简单地加载数据:

OleDbDataAdapter da = new OleDbDataAdapter("select * from input_alignments", cn);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable table = ds.Tables[0];         // use integer index instead of string one
foreach (DataRow row in table.Rows)
{
    sb.Append(row["word1"].ToString();
}

另外,请确保sb已正确初始化。

答案 1 :(得分:1)

看起来您忘记在填充数据集之前将表“input_alignments”添加到数据集中。

文档在此提供了一个示例:

DataSet dataset = new DataSet();
dataset.Tables.Add("aaa");
adapter.Fill(dataset, "AAA"); // Fills table "aaa" because only one similarly named table is in the DataSet.

可能发生的情况是,由于未被声明,该表将不会成为foreach循环中的Reference。您可以尝试通过使用.Tables [0]的引用而不是缺少的名称来验证这一点。

DataSet.Fill()的整个文档:

https://msdn.microsoft.com/en-us/library/y4b211hz(v=vs.110).aspx