我有一个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是一个TextBox。
该表包含五行 但是,Rows.Read始终返回false。 此外,如果我尝试在循环之前访问DataSet_TheData.TheTable.Rows,它将显示零行。 从Access表中正确填充了Cols,因此它不能找到该表。
更换" TheTable.CreateDataReader()"使用"新的DataTableReader(TheTable)"也不起作用。
如何获取代码来查找表中的行?
答案 0 :(得分:0)
要在c#中遍历DataTable的行,您只需执行以下操作:
foreach (DataRow myRow in DataSet_TheData.Tables[0].Rows) {
//Work with myRow here.
}
这将循环返回给您的DataTable中的5行。
然后,在每一行上,您只需使用以下命令访问特定行的列值:
myRow["myColumnName"]
如果您想以编程方式为每一行执行此操作:
foreach (DataRow myRow in DataSet_TheData.Tables[0].Rows) {
foreach (DataColumn myCol in DataSet_TheData.Tables[0].Columns) {
//Use myRow[myCol] here
}
}
答案 1 :(得分:0)
Visual Studio似乎没有链接到现有的Access数据库,因为它创建了表的内部空副本,这就是列出现但行没有出现的原因。当我添加此代码时,填充了表数据:
TestAccessDatabaseDataSetTableAdapters.TheTableTableAdapter A =
new TestAccessDatabaseDataSetTableAdapters.TheTableTableAdapter();
A.Fill(TheDataSet.TheTable);
男孩,这很直观......