OleDbDataReader 异常处理

一开始, OleDbDataReader dbReader=myCmd.ExecuteReader(); 总是捕捉到:
"未处理的 system.data.oledb.oledbexception 类型的异常出现在 system.data.dll 中"的错误信息,
有3种可能引起错误的地方:
1)sql语句错误。应把sql 语句copy到Access查询 中,检查语法,运行测试。
2)数据库连接OleDbConnection可能存在错误。
3) OleDbDataReader未打开,或者OleDbConnection处在关闭状态。
多次检查后确认为sql语句错误。
修改sql后,再次捕捉到:“阅读器关闭时Read的尝试无效”

错误原因:
在方法中关闭了连接,datareader特点是必须是基于打开连接的,一旦connection close()就什么也取不到了,
屏蔽
 //   finally
   //   {
   //    myConn.Close();
   //   }
后总算正常了。
 
查到两种说法:
1)最好是将conn做为参数传入, 再使用ExecuteReader的地方先conn.Open(),使用后conn.Close().

2)在项目中最好不要将datareader这些基于连接的对象做为参数来进行传递.如果非要传参数的话,可以将datareader转化为datatable用来读取数据.

你可能感兴趣的:(reader)