今天在调试程序的时候意外发现一个Bug,折腾了我一个下午!因为在开发时数据库中的数据是手工插入的,所以当时没有出现任何问题,当我把数据都清空后才会出现。因为我天生愚钝,到最后也没有理解到最终的错误原理,不过还是想把解决方案贴出来供大家参考。

查询的sql语句为:select sum(cou) from aa      也就是我要计算aa表中的cou字段之和。

因为懒惰最初我使用的是System.Data.OracleClient.OracleCommand 的ExecuteScalar()直接读取数据。但当我把aa表数据清空之后出现了:“OCI-22060: 参数 [2] 是一个无效或未初始化的数值”的错误。百思不得其解!最后我用System.Data.OracleClient.OracleCommand 的ExecuteReader()读出来,然后在手工去取数据,发现没有问题!
      这时候我有点晕了,上网查查,发现有兄弟也遇到过。他的解决方案是把sql改成:select sum(cou) from aa  where cou is not null。根据他的提示,我把sql改成select sum(nvl(cou,0)) from aa  一样可以正常运行。通过上面的方法可以意识到写一个健壮的sql语句是多么的重要!
      但是我并没有满足于这些,而是跑去查看微软写的源代码,发现System.Data.OracleClient.OracleCommand 的ExecuteScalar()方法调用了ExecuteScalarInternal方法,里面用到了OCI类。而Oracle自己提供的DLL确是跟我们正常写代码一样使用了 OracleDataReader来读数据。尝试取读懂ExecuteScalarInternal方法但以失败告终,不知道在博客园是否有高手能赐教一下那~

转载于:https://www.cnblogs.com/zguilin/archive/2007/01/05/612601.html

ExecuteScalar的使用相关推荐

  1. sqlconnection,sqlcommand,SqlDataAdapter ,ExecuteNonQuery,ExecuteScalar

    sqlconnection:表示 SQL Server 数据库的一个打开的连接.SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话. 在客户端/服务器数据库系统中,它 ...

  2. ExecuteScalar()如何返回整数

    SqlCommand.ExecuteScalar()可以返回单个值的数据库信息,但是它返回的是对象,首先要获得对象的字符串,然后再将字符串转化成整数.代码举例如下: SqlConnection myc ...

  3. c# mysql executescalar_C# 操作MySQL数据库, ExecuteScalar()方法执行T-SQL语句, COUNT(*), 统计数据...

    C# 操作My SQL数据库需要引用"MySql.Data", 可通过两种方式获取. 1.从NuGet下载"Install-Package MySql.Data -Ver ...

  4. ExecuteScalar ExecuteReader ExecuteNonQuery 区别

    ExecuteScalar: 执行查询,并返回查询所返回的结果集中第一行的第一列.忽略其他列或行. ExecuteReader: 将 CommandText 发送到 Connection 并生成一个 ...

  5. [转]ExecuteNonQuery()、ExecuteReader()、ExecuteScalar()的简单说明

    http://blog.csdn.net/wuyujie1219/archive/2009/07/26/4380956.aspx 在连接SQL Server数据库:首先创建SqlConnection类 ...

  6. 用ADO.NET的ExecuteScalar方法返回单一值-资讯动态

    [转]http://www.bitscn.com/pdb/dotnet/200807/147205.html 若您程序中执行的 SQL statement 或 Stored Procedure,只是要 ...

  7. ExecuteScalar

    ExecuteScalar运行查询,并返回查询所返回的结果集中第一行的第一列或空引用(假设结果集为空).忽略其它列或行. 使用 ExecuteScalar 方法从数据库中检索单个值. 由于不用创建行集 ...

  8. command对象的ExecuteScalar方法

    command对象的ExecuteScalar方法 ExecuteScalar方法 格式 command对象.ExecuteScalar() 单词 https://fanyi.baidu.com/#e ...

  9. ADO.NET中COMMAND对象的ExecuteNonQuery、ExcuteReader和ExecuteScalar方法

    1.ExecuteNonQuery方法. 该方法执行更新操作,即与UPDATE.INSERT.DELETE等语句有关的操作,在这种情况下,返回值是命令影响的行数.对其他语句,如SET或CREATE,则 ...

  10. ExecuteNonQuery(),ExecuteDataSet() ,ExecuteReader() ,ExecuteScalar(),DataTable() 用法

    一.ExecuteNonQuery方法 :执行非查询SQL操作,包括增insert.删delete.改update:ExecuteNonQuery()方法执行SQL语句并且不返回数据. public ...

最新文章

  1. Python Flask出现No module named ‘markupsafe._compat
  2. python绘制动态图-Python图像处理之gif动态图的解析与合成操作详解
  3. HTML5/CSS3系列教程:使用SVG图片
  4. plt title设置在下方_Python数据分析:可视化图表注释设置
  5. 【Python】for 循环倒叙遍历
  6. Tesseract 3 语言数据的训练方法【转】http://blog.csdn.net/dragoo1/article/details/8439373
  7. docker启动,重启,关闭命令
  8. AngularJS:模型
  9. 有段时间没更新了。。。放上我在做的东东的截图
  10. 【漏洞分析】dedecms有前提前台任意用户密码修改
  11. paip.快捷方式分组管理最佳实践ObjectDock
  12. 基于FPGA的数字频率计Verilog开发
  13. python有趣的例子和故事_Python几个有趣和特别的小故事
  14. 【Burp suite】intruder内的四种攻击模式(attack type)分析!
  15. Day524.其他数据库日志 -mysql
  16. Java语言-27:Map接口
  17. 高通baseband多媒体简介
  18. java毕业设计SEOUL设计师品牌代购商城Mybatis+系统+数据库+调试部署
  19. 2018中小企业终端管理行业趋势报告
  20. 功能点(FP)分析详细解释

热门文章

  1. qca9377linux无线驱动,ubuntu下安装无线网卡去驱动Qualcomm-Atheros-QCA9377
  2. gdk_screen_get_resolution简单研究
  3. 用了几个开源项目,都无法运行,推广柳氏风格
  4. 成功把泰山Office编译为wasm
  5. 华为微博抽奖头目两次中奖:大哥咱玩不起,不玩行不行?
  6. 六年级下计算机课ppt课件ppt课件,小学信息技术浙摄影版六年级上册第1课 走进计算机说课ppt课件...
  7. python常见变量数据类型_【python基础】常见的变量、数据类型、运算符
  8. 高内聚低耦合_拉锥耦合器最强粘接方案
  9. linux进入root编译gcc,非Root用户编译安装GCC
  10. linux的yum命令无法使用在哪里下载_Centos Linux下载rpm软件包(基础环境篇)-从零到无 - 飞翔的小胖猪...