【发布时间】:2018-04-24 14:51:55
【问题描述】:
我有一个 MS Access 数据库,我正尝试使用 DataSet 在 C# 中访问。但是,虽然它可以获取表的列,但它看不到任何行。
代码如下:
private void Button_Start_Click(object sender, EventArgs e)
{
StringBuilder S = new StringBuilder();
DataTable TheTable = DataSet_TheData.TheTable;
DataColumnCollection Cols = TheTable.Columns;
DataTableReader Rows = TheTable.CreateDataReader();
while (Rows.Read())
{
long Id = Rows.GetInt64(0);
DateTime StartTime = Rows.GetDateTime(3);
S.AppendLine(Id.ToString() + " - " + StartTime.ToString("M/d h:mm tt"));
}
S.AppendLine("Finished reading data");
Text_Output.Text = S.ToString();
}
DataSet_TheTable 是指向设计中定义的 Access 数据库的 DataSet。 Text_Output 是一个文本框。
该表包含五行。
但是,Rows.Read 总是返回 false。
此外,如果我尝试在循环之前访问 DataSet_TheData.TheTable.Rows,它会显示零行。
Cols 是从 Access 表中正确填充的,因此它不是无法找到表的情况。
用“new DataTableReader(TheTable)”替换“TheTable.CreateDataReader()”也不起作用。
如何获取代码以查找表中的行?
【问题讨论】:
-
数据集不会在此方法中填充。您可以显示填充数据集的代码吗?它曾经被调用过吗?
-
您需要从 MS Access 数据库中获取单个表,还是获取多个表然后迭代数据(即在 POCO 中)?
-
squillman - 数据集本身 (DataSet_TheTable) 是设计端对象。可以找到 TheTable 因为 TheTable.Columns 已填充。 /Kane - 数据库中只有一张表,名为 TheTable。