赞
踩
遇到这样一个问题:添加互评信息,断点调试,跳转到BLL层后就直接跳到SqlHelper中弹出错误,说:未将对象设置引用到实例等。还请人帮忙调试代码,调试半天发现抽象工厂并没成功完成反射,奇怪的是:将出现问题的方法中换用反射其他的接口没有问题,后来将有问题的接口和DAL层类都重写了,问题好像解决了。所以添加互评就这么实现了,结果实现查询操作的时候问题重现了,我逐步调试,发现这样一个问题,调试到抽象工厂类,会发现这个问题:ServerVersion 引发了“System.InvalidOperationException”类型的异常。
如果您跟我一样使用SqlHelper了,你可以这样试着解决下问题:看一下你SqlHelper类中的方法是否正常使用了Try…Catch…,我的这个问题就是因为SqlHelper中Try…Catch…使用不正确,打开的数据库连接并没正常关闭。
出现问题的带参数sql查询语句或存储过程
- #region 执行带参数的查询SQL语句或存储过程
- /// <summary>
- /// 执行带参数的查询SQL语句或存储过程
- /// </summary>
- /// <param name="cmdText">查询SQL语句或存储过程</param>
- /// <param name="paras">参数集合</param>
- /// <param name="ct">命令类型</param>
- public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)
- {
- try
- {
- //定义并实例化DataTable表
- DataTable datResult = new DataTable();
- //实例化SqlCommand
- sqlCmd = new SqlCommand(cmdText, GetConn());
- //传来的SqlCommand类型:存储过程、sql语句等
- sqlCmd.CommandType = ct;
- //添加参数
- sqlCmd.Parameters.AddRange(paras);
- using (sdr = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection))
- {
- datResult.Load(sdr);
- }
- //返回数据表
- return datResult;
- }
- catch
- {
- //没有数据返回空值
- return null;
- }
- finally
- {
- //关闭记录集
- sdr.Close();
- //关闭数据库
- sqlConn.Close();
- }
- }
- #endregion
修改后的sql查询语句或存储过程
- #region 执行带参数的查询SQL语句或存储过程
- /// <summary>
- /// 执行带参数的查询SQL语句或存储过程
- /// </summary>
- /// <param name="cmdText">查询SQL语句或存储过程</param>
- /// <param name="paras">参数集合</param>
- /// <param name="ct">命令类型</param>
- public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)
- {
- //实例化一个Datatable对象
- DataTable dt = new DataTable();
-
- //创建一个连接
- sqlCmd = new SqlCommand(cmdText, GetConn());
-
- //指定命令类型
- sqlCmd.CommandType = ct;
-
- //给该命令传入参数
- sqlCmd.Parameters.AddRange(paras);
-
- //将查询出来的记录放入dt中
- using (sdr = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection))
- {
- //将SqlDataReader中的记录放入dt中
- dt.Load(sdr);
-
- //关闭阅读器
- sdr.Close();
- }
-
- //关闭数据库连接
- Close();
-
- //返回DataTable
- return dt;
- }
- #endregion
小学问,大道理。try…catch…的作用影响很大的……
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。