ExecuteReader在执行有输出参数的存储过程时拿不到输出参数
2016-04-07 10:36
330 查看
异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html
后期会在博客首发更新:http://dnt.dkill.net/Article/Detail/312
今天一同志问我这个问题,这个是过程还原:
调用SQLHelper的时候发现输出参数没值了???
不用sqlhelper也是没有?神马情况?
用sqldataadapter却可以?
吓死宝宝了,赶紧看看啥情况。先换种方法看看
,,,我去,可以哇!那么是不是ExecuteReader容易有啥坑的问题呢?想了想,对头,是不是返回的reader有点问题?
先关了看看~我去,有值了!不会这么容易就搞定了吧?不行,得再试试
~~的确,reader没关闭,那输出参数就没值(其实也可以理解~reader说:本大王还没读取完呢,你丫急什么,给我等着)
不能就这样算了啊,我不能总自己写吧,sqlhelper的问题还是得解决
我去,还是没有。。。。。。。这可不行,看看sqlhelper的源码怎么搞的
万恶的清除啊!再试试
居然可以了,ok,收工了?来来来,我们继续看看
SQLHelper怎么写的?
额,经常听前辈说SqlDataAdapter是个神奇的东西,果然...
扩:一般很少直接返回SqlDataReader对象的,
贴一个比较弱的转换(有更好的可以贴评论中的,我就先抛个砖头)
后期会在博客首发更新:http://dnt.dkill.net/Article/Detail/312
今天一同志问我这个问题,这个是过程还原:
调用SQLHelper的时候发现输出参数没值了???
不用sqlhelper也是没有?神马情况?
用sqldataadapter却可以?
吓死宝宝了,赶紧看看啥情况。先换种方法看看
,,,我去,可以哇!那么是不是ExecuteReader容易有啥坑的问题呢?想了想,对头,是不是返回的reader有点问题?
先关了看看~我去,有值了!不会这么容易就搞定了吧?不行,得再试试
~~的确,reader没关闭,那输出参数就没值(其实也可以理解~reader说:本大王还没读取完呢,你丫急什么,给我等着)
不能就这样算了啊,我不能总自己写吧,sqlhelper的问题还是得解决
我去,还是没有。。。。。。。这可不行,看看sqlhelper的源码怎么搞的
万恶的清除啊!再试试
居然可以了,ok,收工了?来来来,我们继续看看
SQLHelper怎么写的?
额,经常听前辈说SqlDataAdapter是个神奇的东西,果然...
扩:一般很少直接返回SqlDataReader对象的,
贴一个比较弱的转换(有更好的可以贴评论中的,我就先抛个砖头)
public static IEnumerable<T> SqlDataReaderToList<T>(SqlDataReader reader) where T : new() { using (reader) { if (reader.HasRows) { IList<T> list = new List<T>(); while (reader.Read()) { T t = new T(); PropertyInfo[] propertys = t.GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { string tempName = pi.Name; //设置 RowFilter reader.GetSchemaTable().DefaultView.RowFilter = string.Format("ColumnName='{0}'", tempName); //判断SqlDataReader是否存在某列 if (reader.GetSchemaTable().DefaultView.Count > 0) { if (!pi.CanWrite) { continue; } var value = reader[tempName]; if (value != DBNull.Value) { pi.SetValue(t, value, null); } } } list.Add(t); } return list; } } return null; }
相关文章推荐
- [NOIP 2014复习]第三章:动态规划——NOIP历届真题回想
- Libcaptcha CAPTCHA 图片的 C 语言库
- python.zip() 多列表压缩
- 叶子云桌面虚拟化解决方案100-200用户
- Caused by: org.xml.sax.SAXParseException; lineNumber: 70; columnNumber: 10; 元素类型为 "mapper" 的内容必须匹配 "
- CocoaAsyncSocket 网络通信使用之http协议测试(三)
- TOTOLINK N500UA无线网卡同时开启AP和Mesh point模式
- RDS记录
- 将MySQL数据迁移到PostgreSQL的工具 - mysql2psql
- javascript Array数组常用方法学习与总结
- struts2中使用action属性传递参数
- 矩阵旋转
- 关于快速报错fail-fast想说的之fail-fast的实现原理(一)
- STL空间配置器(三)
- Openstack Kilo版本安装及问题总结
- C/C++程序员桌面壁纸---简尚黑
- 个人总结-网络安全学习和CTF必不可少的一些网站
- CocoaAsyncSocket网络通信使用之数据编码和解码(二)
- Android studio代码中的大小写字母切换
- 4.1.3.3 master_flow_init函数:创建master_flow_pipe管道,同步收发信速度