异常处理汇总-后端系列 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对象的,

贴一个比较弱的转换(有更好的可以贴评论中的,我就先抛个砖头)

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;//设置 RowFilterreader.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;}

 

ExecuteReader在执行有输出参数的存储过程时拿不到输出参数相关推荐

  1. oracle 参数类型 存储过程 获取_oracle Array类型作为参数传入函数(存储过程) 大字符串参数解决方案...

    1. 创建自定义的类型.由于Oracle没有提供现成的array类型,这里用table类型来模拟. CREATE OR REPLACE TYPE varchar_array is Table OF v ...

  2. Python中使用print,每次输出数据到文件时,记录当前输出时间,数据序号加一

    在将数据写入文件时,有时需要将数据标号,每次记录时让标号递增.本文思路是新建一个用于标号数据的文本文件,每次运行程序时调用里面的数据,加一后再将数据写入文件. 具体代码如下: import time ...

  3. 带有无参数的存储过程

    SQL中调用存储过程语句:call procedure_name(); 注:调用时"()"是不可少的,无论是有参数还是无参数. 定义对数据库存储过程的调用时 1.无参数存储过程:{ ...

  4. Oracle--带参数的存储过程(IN、OUT和IN OUT)

    带参数的存储过程 存储过程允许带有参数,参数的使用将增加存储过程的灵活性,给数据库编程带来极大的方便. 存储过程中如果使用了参数,在执行存储过程时必须为其指定参数.总的来说,参数可以是常量.变量和表达 ...

  5. MySQL 学习笔记(6)— 存储过程创建、调用、删除以及带参数的存储过程

    1. 存储过程总结 存储过程是一种存储在数据库中的程序.它可以包含多个 SQL 语句,并提供许多过程语言的功能,例如变量定义.条件控制语句.循环语句.游标以及异常处理等. 1.1 存储过程优点 实现代 ...

  6. python 默认参数后接可变参数_Python可变参数会自动填充前面的默认同名参数实例...

    Python可变参数会自动填充前面的默认同名参数实例 最近在学习Python的时候遇到一个知识点,在此记录下来 可变参数会自动填充前面的同名默认参数 比如下面这个函数 def add_student( ...

  7. 微信授权回调时,回调地址中原有参数丢失

    近日在做登录微服务的时候,需要做微信授权认证.出现各种坑,(有坑才有成长). 之前一直是只带有一个参数, 没有发现任何问题, 今天在测试项目一些功能时,发现授权后的回调地址中,丢失了原有的参数. 授权 ...

  8. 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值...

    关于ExecuteNonQuery执行存储过程的返回值 用到过ExecuteNonQuery()函数的朋友们在开发的时候肯定这么用过. if(cmd.ExecuteNonQuery("xxx ...

  9. C#里调用带输出参数的存储过程

    C#里调用带输出参数的存储过程  1using System;  2using System.Collections.Generic;  3using System.Linq;  4using Sys ...

  10. oracle存储过程rowcount用法,Oracle带输入、输出参数的存储过程回来受影响的行数SQL%ROWCOUNT...

    当前位置:我的异常网» SQL » Oracle带输入.输出参数的存储过程回来受影响的行数 Oracle带输入.输出参数的存储过程回来受影响的行数SQL%ROWCOUNT www.myexceptio ...

最新文章

  1. Ackerman 函数-奇怪的函数
  2. linux启动关闭脚本,Linux下自动启动关闭Oracle脚本
  3. 四、【线性表】线性表的顺序表示和实现
  4. 在颜值上,我 Bootstrap 真的没怕过谁
  5. 上海大学计算机学院师资力量,计算机学院张瑞老师荣获第二届上海高校青年教师教学竞赛决赛二等奖...
  6. nginx配置多个域名_Nginx配置多个网站/项目的简单方式
  7. java游戏代码大全_求一个简单的Java小游戏的代码
  8. 提升工作效率的一些工具
  9. zabbix 3.2 php,zabbix3.2.3安装教程
  10. C语言也能干大事第十四节(如鹏基础)
  11. 【PS图像处理】PS软件提示不能完成命令,因为暂存盘已满的解决办法
  12. 网站被黑客劫持了选择高防CDN
  13. Flutter Align控件用法
  14. mysql:列类型之Spatial
  15. 南华大学计算机考研真题,2021南华大学考研历年真题复习资料
  16. 第五章总结(创建与使用视图)
  17. HDFS 本地编程报错java.net.ConnectException: Call From LAPTOP-LJF22VB3/192.168.56.1 to 192.168
  18. python自动化输入文本_python输入文本
  19. unity使用ugui自制调色面板
  20. 基于java+jsp+ssm水果蔬菜销售系统

热门文章

  1. 计算机图形学(二)——实验二:直线的生成算法
  2. oracle 检查链接数,oracle连接数检查
  3. jsp过滤器一点小结
  4. 一种在Java层实现的守护进程方式
  5. 接口自动化测试框架搭建(5、封装get.post请求方法)--python+HTMLTestRunnerCN+request+unittest+mock+db
  6. jdk32位安装包下载_MySQL 8.0.19安装图文详解!手把手教会您从下载到安装成功
  7. android多线程实现计时器,方法一、使用Handler和Thread(线程)实现定时器
  8. java打包----“Artifacts”
  9. python软件包版本查询的方法
  10. 项目实战-1读取记事本中的文件,写入到slice切片中。