【发布时间】:2017-10-27 05:10:50
【问题描述】:
我正在尝试将数据读取器传递给一个方法,但出现如下错误:
阅读器关闭时调用 fieldcount 的尝试无效。
代码:
public class ImportService
{
public IDataReader Reader { get; set; }
public void MyMethod()
{
string[] Tables = { "Table1", "Table2"};
foreach (var table in Tables)
{
try
{
var msSql = new MsSql(table,conn);
Reader = msSql.Reader;
msSql.Reader.Close();
DumpData(conn, Reader);
Reader.Close();
}
catch (Exception ex)
{
//catch exception here
Reader.Close();//in case of error while dumping data close the reader.
}
}
conn.close();
}
private void DumpData(SqlConnection conn, IDataReader reader) //Invalid attempt to call FieldCount when reader is closed
{
}
}
public class MsSql
{
public IDataReader Reader { get; set; }
public MsSql(string table, SqlConnection Conn)
{
GetData(table,Conn);
}
private void GetData(string table, SqlConnection Conn)
{
string query = "SELECT * FROM " + table;
using (SqlCommand cmd = new SqlCommand(query, Conn))
{
cmd.CommandTimeout = 0;
Reader = cmd.ExecuteReader();
}
}
}
我在全局对象 Reader 中成功获取数据,但是当我将它传递给我的 dumpdata 方法时出现错误。
我已经检查了以下问题,但他们无法帮助我解决当前的情况:
更新:当我将msSql.Reader 传递给 Dumpdata 时,一切正常,如下所示:
DumpData(conn, msSql.Reader);
【问题讨论】:
-
嗯,您正在关闭
GetData中的SqlCommand...您希望如何能够从关闭的命令中读取数据? -
@JonSkeet:但是我在我的 msSql.Reader 中成功获取了记录,当我将 msSql.Reader 传递给 DumpData 方法时它正在工作
标签: c# ado.net sqldatareader