在 asp 中获取数据行时对象引用未设置异常
object reference not set exception while getting datarow in asp
Object reference not set to an instance of an object
从 DataTable
获取 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
已正确初始化。
Object reference not set to an instance of an object
从 DataTable
获取 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
已正确初始化。