在 asp 中获取数据行时对象引用未设置异常

object reference not set exception while getting datarow in asp

Object reference not set to an instance of an objectDataTable 获取 DataRow 时出现异常。任何人都可以为此提供解决方案。

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

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

异常的原因是什么?

您似乎忘记在填充数据集之前将 table "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.

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

关于 DataSet.Fill() 的完整文档在这里:

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

由于您的查询 returns 只有一个结果集,您可以像这样简单地加载数据:

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 已正确初始化。