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();
}
异常的原因是什么?
答案 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