日期:2014-05-17  浏览次数:20790 次

阅读器关闭时尝试调用read无效

  //查询语句中字段为 * 时的通用方法。
  private static List<Admin> GetAdminBySql(CommandType commandType, string commandText, params SqlParameter[] paras)
  {
  List<Admin> list = new List<Admin>();
  using (SqlDataReader reader = DBHelper.ExecuteGetReader(commandType, commandText, paras))
  {
  while (reader.Read())
  {
  Admin admin = new Admin
  {
  Id = (int)reader["Id"],
  LoginId = reader["LoginId"].ToString(),
  LoginPwd = reader["LoginPwd"].ToString(),
  Name = reader["Name"].ToString(),
  Phone = reader["Phone"].ToString()
  };
  list.Add(admin);
  }
  }
  return list;

------解决方案--------------------
改你的SqlHepler
或这选择返回DataTable的方法

写了直接报错哦

你写哪了?你用脑子想一想,直接写行吗?类型都不对,

 using (DataTable xx = DBHelper.ExecuteGetTable(commandType, commandText, paras)

DBHelper.ExecuteGetTable里面定义返回DataTablle的方法,在ExecuteGetReader里面添加
DataTable x = new DataTable();
x.Load(datareader)

return x;
就能返回DataTable了,你明白了,吗???
------解决方案--------------------
没有你加一个
public DataTable ExecuteGetTable(commandType, commandText, paras)
{
 ....这里跟ExecuteGetReader里面的代码类似,得到datareader 只是最后
DataTable x = new DataTable();
x.Load(datareader);
return x;
}