sqldatareaderからデータを読み取っているときに、「リーダーが閉じているときにReadを呼び出そうとして無効になりました」というエラーが表示されます。私のコードは以下の通りです
明らかに、これはExecSqlDataReaderのusingステートメントによって閉じられています
このメソッドを呼び出してから別のクラスでリーダーを使用できるようにしたいのですが、ExecSqlDataReaderメソッド内でSqlDataReaderをループすることなく、これを回避する方法はありますか?
それが理にかなっていることを願っています
ありがとう
コード:
SqlDataReader reader = data.ExecSqlDataReader(1);
while (reader.Read())
{
.....
}
public SqlDataReader ExecSqlDataReader(int queryType = 0)
{
using (var conn = new SqlConnection(this.ConnectionString))
{
try
{
PrepareCommandForExecution(conn, queryType);
return _cmd.ExecuteReader();
}
finally
{
_cmd.Connection.Close();
}
}
}
private SqlCommand PrepareCommandForExecution(SqlConnection conn, int sqlType = 0)
{
_cmd.Connection = conn;
switch (sqlType)
{
case 0:
_cmd.CommandType = CommandType.StoredProcedure;
break;
case 1:
_cmd.CommandType = CommandType.Text;
_cmd.CommandText = _tSqltext;
break;
case 2:
_cmd.CommandType = CommandType.TableDirect;
break;
}
_cmd.CommandTimeout = this.CommandTimeout;
_cmd.Connection.Open();
return _cmd;
}