我正在使用OleDbDataReader从Access数据库中读取一列,并且我希望能够使用相同的读取器在相同的函数中再次读取该列,因为我正在对两个数据库进行一些比较,有时两个数据库中相同的记录的顺序不同,因此我必须遍历数据库,直到找到指定的记录,然后进行比较。
问题是
是否有一个函数可以获取OleDbDataReader的当前行索引
如何将OleDbDataReader重置为第一行?
发布于 2012-08-02 01:38:56
您不能将读卡器重置到开始位置,因为它是为forward-only reading设计的。
有几种其他方法可以解决这类问题:
发布于 2012-08-02 01:34:42
根据MSDN,OleDbDataReader类
提供了一种从数据源读取只进数据行流的方法。
这意味着没有办法返回到前一行。您所能做的就是读取当前行或移动到下一行。如果需要能够随机访问任何行,典型的解决方案是将所有行加载到列表中,例如DataTable,然后处理列表中的行。
发布于 2013-05-07 02:15:14
我正在解决一个类似的问题,使用DataTable是解决数据阅读器只能前进的问题的最简单的方法。
DataTable table = new DataTable("DataTable");
for (int colNum = 0; colNum < reader.FieldCount; colNum++)
{
DataColumn col = new DataColumn();
col.ColumnName = reader.GetName(colNum);
table.Columns.Add(col);
}//colNum
while (reader.Read())
{
DataRow row = table.NewRow();
for (int colNum = 0; colNum < reader.FieldCount; colNum++)
{
string columnName = reader.GetName(colNum);
row[columnName] = reader.GetValue(colNum);
}//for
table.Rows.Add(row);
}//while
table.AcceptChanges();卡洛斯·梅里格。
https://stackoverflow.com/questions/11764449
复制相似问题