我创建了一个构造函数方法来执行sqldatareader以避免重新键入sqlconnection,但是使用它时会出现错误:
public SqlDataReader ExecuteCommand(string cmdText, CommandType cmdType)
{
SqlDataReader dr = null;
using (SqlConnection conn = new SqlConnection(ConnString))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = cmdText;
cmd.CommandType = cmdType;
try
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
dr = cmd.ExecuteReader();
}
}
catch(Exception e)
{
}
finally
{
dr.Dispose();
conn.Close();
}
}
return dr;
}
我尝试使用它,但发生错误:
SqlDataReader dr = ExecuteCommand("Select * from EmployeeInfo where Employeeid = 2", CommandType.Text);
textBox1.Text = dr[1].ToString();
错误是:
关闭阅读器后,无效尝试调用CheckDataIsReady。
答案 0 :(得分:1)
只需考虑程序的步骤:
functionName
首先,您正确打开连接并执行命令-一切正常!
destructor
接下来,您的代码到达了finally块-您(尝试)处置读取器并关闭连接!再次没有错。 接下来是您的问题:
try
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
dr = cmd.ExecuteReader();
}
}
您返回一个封闭的读取器,然后尝试从中读取它-这会导致您收到错误。 恕我直言,我想到了两种可能的解决方案: