.NET - 使用DataSet从MS Access DB获取行

时间:2018-04-24 14:51:56

标签: c# .net ms-access

我有一个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)"也不起作用。

如何获取代码来查找表中的行?

2 个答案:

答案 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);

男孩,这很直观......