我正在尝试将存储在.mdb Access文件中的查询中的一些行放入c#中的DataSet中。这一直没有任何问题。 [查询本身(SOME_QUERY_ON_FILE_MDB)是存储在同一Access DB中的其他查询和表的连接和联合的结果。
var conn = new OdbcConnection("Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\Temp\Report.mdb;Uid=Admin;Pwd=;");
conn.Open();
var command = new OdbcCommand(" SELECT * FROM SOME_QUERY_ON_FILE_MDB", conn);
command.CommandType = CommandType.Text;
OdbcDataAdapter dataAdapter = new OdbcDataAdapter(command);
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);
conn.Close();
conn.Dispose();
当我运行此代码时,我在Dataset.Tables[0]
中获得了25行。但是,如果我在MS Access中打开.mdb文件,则有26行!
此外,如果我调试并逐步执行此代码,或者如果我在打开连接之间和获取行之间使线程休眠几毫秒,则会正确检索所有26行。
这里有什么问题?当我执行Select时,似乎查询结果还没有准备好 是否有一些干净的方法来避免这种情况?