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(); } }