当前位置: 代码迷 >> ASP.NET >> DataReader.read()的有关问题
  详细解决方案

DataReader.read()的有关问题

热度:10727   发布时间:2013-02-25 00:00:00.0
DataReader.read()的问题
aa类里做了一个方法
public static OleDbDataReader getdr(string sql)  
  {
  OleDbDataReader dr = null;
  try
  {
  conopen(); //打开数据库
  cmd.CommandType = CommandType.Text;
  cmd.CommandText = sql;
  dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  }
  catch
  {
  dr.Close();
  }
  return dr;
  }

然后在另一页里调用
  string sql = "select * from usetb where uid='"+sid+"'";
  OleDbDataReader dr = aa.getdr(sql);
  if (dr.Read()) //这里就出错了
  {.... }
  else
  {.....}
调试时提示用户代码未处理InvalidOperationException
{"阅读器关闭时尝试调用 Read 无效。"}

正常运行时提示
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

我发现好象第一次执行是可以执行的,但第二次执行就这样出错了

------解决方案--------------------------------------------------------
第一次用完之后没有关掉,第二次重复打开引发了异常dr就Close掉了
------解决方案--------------------------------------------------------
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
把参数去掉
------解决方案--------------------------------------------------------
C# code
    public static OleDbDataReader getdr(string sql)    {        OleDbDataReader dr = null;        try        {            conopen();  //打开数据库             cmd.CommandType = CommandType.Text;            cmd.CommandText = sql;            return dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);        }        catch        {            throw new Exception("AA");        }        finally        {            dr.Close();        }    }
  相关解决方案