c# mysql executescalar为什么返回值是空_C#中ExecuteScalar的返回值DBNull和null的值别说明...
select 1 这样返回的object是 1
select null 这样返回的是DBNull.Value
select isnull(null,1) 返回的是 1
select top 0 id from table1 这样返回的值是null
select isnull(id,0) from table1 where 1=0
返回的值是null
这里 ExecuteScalar
的规则就是,返回第一列,第一行的数据。假如第一列第一行不为空,那么ExecuteScalar就直接对应的DotNet的值。假如有第一行,但是第一列为空,那么返回的是
DBNull 。假如一行都没有,那么ExecuteScalar就返回null
规则就是这样的。这里容易犯的一个错误是,把ExecuteScalar返回DBNull和null的情况混淆,例如:
string
username=cmd.ExecuteScalar().ToString();
除非您认为cmd执行后,肯定至少有一行数据,否则这里就会出错。
又或 select id from usertable where username=@name
这样的sql语句,假如很难找到记录,那么ExecuteScalar则会返回null,所以千万不要
int
userid=Convert.ToInt32(cmd.ExecuteScalar());
或您会这样写 SQL 语句:select isnull(id,0) from
usertable where username=@name
但是 int
userid=Convert.ToInt32(cmd.ExecuteScalar());
依然会出错,因为上面的语句不成立时,仍然是不返回任何行。
对于IDbDataParameter(OleDDbParameter,SqlParameter..)的Value,假如为null,则代表该参数没有指定,或是代表DEFAULT。假如为DBNull.Value,则代表SQL中的NULL
所以,假如您要调用存储过程,里面有参数 @val
nvarchar(20)="AABB" ,
那么cmd.Parameters["@val"].Value=null 代表使用这个默认的
"AABB"
而cmd.Parameters["@val"].Value=DBNull.Value
代表使用NULL来传给 @val
您能够用Convert.IsDBNull来判断一个值是否DBNull。注意Convert.IsDBNull(null)是false。
以前总以为SqlCommand.ExecuteScalar()返回所影响的行数,MSDN上的解释SqlCommand.ExecuteScalar
方法
执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行,
今天用SQLHelper.ExecuteScalar()执行语句,判断记录是否存在,用的是int i =
Convert.toInt32(SqlHelper.ExecuteScalar(connectionstring,CommandType.Text."Sql"));可是总是提示无法进行格式转化,原来ExcuteScalar返回的是一个于结果集第一行相应数据类型的值,如果没有结果,返回的是NULL或者是DBNull.Value,可以用空值的判断方式
object obj = SqlHelper.ExecuteScalar();if (obj != null
&& obj !=
DBNull.Value){Response.Writer("有结果";}else{Response.Write("no
found");}
c# mysql executescalar为什么返回值是空_C#中ExecuteScalar的返回值DBNull和null的值别说明...相关推荐
- c# mysql executescalar为什么返回值是空_C#中ExecuteReader()、ExecuteNonQuery()、ExecuteScalar()方法的作用 | 学步园...
ExecuteReader 将 CommandText 发送到 Connection 并生成一个 SqlDataReader 执行返回行的命令. 为了提高性能,ExecuteReader ...
- c# mysql executescalar为什么返回值是空_当没有结果返回时处理ExecuteScalar()
根据DbCommand.ExecuteScalar的MSDN文档 : 如果结果集中第一行的第一列未find,则返回null引用(在Visual Basic中为Nothing). 如果数据库中的值为空, ...
- 【SpringBoot整合Mybatis】数据库某字段值为空时,接口未返回该字段 解决办法
[SpringBoot整合Mybatis]数据库字段为空时,接口不返回该字段 解决办法 问题描述: 排查问题: 解决问题: 测试: 参考资料: 今天整合项目的时候,发现了SpringBoot整合Myb ...
- asin c语言中 返回值范围_asin()_C语言asin()详解:反正弦函数,求反正弦值
double asin(double x); asin() 函数的功能是求反正弦值. 反正弦函数 asin() 和正弦函数 sin() 的功能正好相反:sin() 是已知一个角的弧度值 x,求该角的正 ...
- python返回值return用法_Python中return函数返回值代码实例用法
本篇文章小编给大家分享一下Python中return函数返回值代码实例用法,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. return 添加返回值 r ...
- MySql数据库查询表信息/列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述)...
查询表信息(表名/表描述): SELECT table_name name,TABLE_COMMENT value FROM INFORMATION_SCHEMA.TABLES WHERE table ...
- elasticsearch 根据条件去除重复值_Excel工作表中的条件格式,不只是查找重复值,还有7种典型用法...
Excel工作表中的[条件格式],对于大部分亲来说并不陌生,用的最多的应该是标识"重复值"或"唯一值",其实还有数据可视化等多种功能-- 一.Excel条件格式 ...
- mysql的decimal保留两位小数_C#中的decimal怎么保留两位小数
展开全部 在C语言中编写如下程序: 1.decimal d = 0.234M: 2. *保留小数后两位*(注释) 3.d=Math.Round(d,2): 最终结果为:d=0.23,即为6261696 ...
- html ios返回后刷新页面,Ios中微信页面返回上一页去除缓存几种常见思路
前言 这篇文章和第,.年过事工宗据指数遍互业经搞断果会主要讲解决思路,不对各种概念进行抖要支圈者器说是事天开的.年后编定功口小发还应久剑过多讲解. 问题描述 开发微信H5页面的时候,在Ios微信内置浏 ...
最新文章
- 开源项目哪家强?Github年终各大排行榜超级盘点(内附开源项目学习资源)
- RHEL 5基础篇—文件和目录的管理
- Codeforces Round #361 (Div. 2) B. Mike and Shortcuts bfs
- 全球及中国烯丙基硫脲行业十四五需求产量及投资规模预测报告2022版
- 网络发现不了计算机 但是输入IP可以看到,启用了网络发现为什么还是发现不了其他计算机 其他计算机也发现不了我...
- redmine1.3.x 插件安装
- HarmonyOS之生物特征识别的功能和使用
- ftp之高级配置——虚拟用户
- 如何使用JavaScript中的工厂函数构建可靠的对象
- 获取Spring容器管理的Bean工具类
- 【Siddhi】Syntax error in SiddhiQL, no viable alternative at input
- android 线程池 怎么用,android中的线程池 怎么用
- c# checkbox 外观_2020款日产蓝鸟上市!外观比大众朗逸漂亮,油耗6L 国六,9.59万_搜狐汽车...
- 计算机软件行业代码,行业代码大全.docx
- linux串口dma,详解linux dma驱动编写
- 《开源安全运维平台-OSSIM最佳实践》于2016年1月出版
- sd,sdhc,sdxc
- CentOS 7.6 编译安装最新版本glibc2.30 实录
- 微信公众号的申请以及测试号的申请
- 5大巨头入场瓜分3万亿市场!加密世界vs.互联网史诗战争将打响!