错误原因:
执行DataReader时,在方法中关闭了数据库连接。DataReader特点是必须是基于数据库打开连接的open(),一旦你的connection被close()掉以后就什么也取不到了,所以DataReader不能用,所以在项目中最好不要将DataReader这些基于连接的对象做为参数来进行传递,可以直接使用。
解决方法:如果非要传参数的话,可以将DataReader转化为datatable用来读取数据,或者将数据库的打开和关闭用代码控制好,最好是将open()和close()写成独立的方法。如:
SqlConnection conn;
/// <summary>
/// 打开连接
/// </summary>
public void openConn()
{
conn = new SqlConnection("Data Source=192.168.1.2;User Id=sa;Password=sa;Initial Catalog=MyDB;");
conn.Open();
}
/// <summary>
/// 关闭连接
/// </summary>
private void closeConn()
{
try
{
conn.Close();
conn.Dispose();
}
catch
{
conn = null;
}
}