.netc 判断字符串是否为空不为空怎么判断

trackbacks-0
SqlConnection con=new SqlConnection("server=.;database=uid=pwd=");
SqlCommand cmd=new SqlCommend("select id,name from user where id=1",con);
con.Open();
SqlDataReader sdr=cmd.ExecuteReader();
while(sdr["name"]!=null)//此处并不能判断name字段是否为空值
&&&&& txtUser=sdr[name].ToString();
如果通过name字段在数据库中为空值,用sdr["name"]!=null判断得到的结果为true,原因为name字段读出来为system.DBNull
正确的判断方法是
sdr["name"]!=System.DBNull.Value
也可以用下面的方法
sdr["name"].ToString()!=""
附:null表示空对象或指针-在C#中)System.DBNull表示空数据(数据库在C#中的表示)
MSDN:请勿将面向对象的编程语言中的 null引用(在 Visual Basic 中为 Nothing) 概念与 DBNull 对象混淆。在面向对象的编程语言中,null 引用(在 Visual Basic 中为 Nothing) 表示不存在对某个对象的引用。DBNull 则表示未初始化的变量或不存在的数据库列。
附:如何正确理解 SQL 中的 NULL
  在 SQL 语句中, NULL 值与字符列中的空格, 数字中的零, 字符列中的 NULL ASCII 字符都不相同. 当DBMS在一列中发现一个 NULL 值时, 就将其翻译为未定义或是不可用的. DBMS不能在一列中做出有关 NULL 的假设, 也不能假设 NULL 值等于 NULL, 造成某一列成为 NULL 的因素可能是: (1),值不存在;(2), 值未知; (3), 列对表不可用. 所以, 应将 NULL 值当作是一个批示符, 而不是一个值. 当DBMS 在表的某一行的某一列中找到 NULL 值时, DBMS就知道该数据已丢失或者是不可用.
   一句话, NULL 指示这个值 "未知",原因是它可能不存在, 可能不可用, 也可能就是因为值未知.
   这里对各个环境下的 "空值" (不知道该怎样总称这些东西, 暂且就叫空值吧!)简单的解释一下:
   1:真正的空值 (SQL 中的 NULL)
  等同&没有输入的值&,可以出现在大多数类型的字段中(如果没有别的约束条件),SQL server中表示为null,显示为,手工在SQL server企业管理器中输入的方法是按Ctrl+0。它在.NET中对应System.DBNull.Value。在T-SQL命令中,判断一个值是不是空值,要用&is null&而不是&= null&;处理空值有个ISNULL函数,它使用指定的值替换null。用ADO.NET从数据库得到的空值无法自动转化为空字符串或Nothing,须手动检测:如果得到System.DBNull.Value,则赋给数据对象Nothing或其它自定义的有意义的值。
  2:空字符串(零长度字符串),只出现在字符串类型(如nvarchar)的字段中,SQL server中表示为&&,显示为空白,手工在SQL server企业管理器中输入时清空一个单元格即可。它在.NET中对应System.String.Empty,也就是我们常用的""。在T-SQL命令中处理空字符串和处理一般的字符串没什么区别。用ADO.NET从数据库得到的空字符串也和一般的字符串没什么区别。
  3. VB.NET中的N 它其实对应于C#.NET中的null(注意这个null是C#.NET中的null而非SQL Server中null),它们在.NET中是表示不引用任何对象的空引用的值,在传入
  SQL server时,根据不同的上下文环境,可能存为真正的空值(比如在更新一个字符串类型的字段值时),也可能调用在SQL server中自定义的默认值(比如传给一个有默认值的存储过程参数),也可能因为无法进行类型转换而引发.NET异常。因此在用ADO.NET向SQL server中存储数据时,大家一定要小心使用Nothing。
  4.undefined 值与 null 的区别是:
  一般情况下, 下列情况可使用undefined值:
  (1),对象属性不存在,
  (2),声明了变量但从未赋值。
  而释放引用,跟踪结果为变量值等操作使用 null.
阅读(...) 评论()网页 中 如何处理 查询 出来字段为空的 数据???报错!!_百度知道
网页 中 如何处理 查询 出来字段为空的 数据???报错!!
数据库的 SQL 语句 这样 写:
max(MAccount )
if ( myReader.Read())
{ 哗盯糕故蕹嘎革霜宫睛
(string)myReader[0];
str_max = &&;
Response.Write(str_max);}
问题就出在这里, 为什么 当数据库的字段MAccount
有记录值 可以这样转换 ,如果 MAccount 没有记录时 ,会报错
object 不能转换 为string类型,
如果SQL 语句这样写 又可以使用
哗盯糕故蕹嘎革霜宫睛 string
if ( myReader.Read())
(string)myReader[0];
str_max = &&;
Response.Write(str_max);}还有 在 VB.NET里面可以使用 Not ISDbnull 来判断 数据为空, 而在C# 改如何判断???急 请高手指点
提问者采纳
你可以使用一些不会报错的方式将object转换为字符串如str_max=string.Format(&{0}&,myReader[0]);当yReader[0]为null时将返回string.Empty,此方法永远不返回NULLstr_max=myReader[0]当转换失败时不会出异常而是返回null
其他类似问题
为您推荐:
其他4条回答
C#中判断查询出的结果是否为空,可以使用DBNull.Value来判断.简例:if (dt.Rows[0][哗盯糕故蕹嘎革霜宫睛&Id&] != DBNull.Value){
fd.Id = Convert.ToInt32(dt.Rows[0][&Id&].ToString());}
DBnull.Value,至于补充的应该是隐式和显式数据转换的问题
DBNull.Value.Equal(myReader[0])
数据库中的空值使用“DBnull.Value”判断
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁CLR C++ 中如何判断字符串为空?
[问题点数:20分]
CLR C++ 中如何判断字符串为空?
[问题点数:20分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。C中怎么判断字符串为空?
[问题点数:30分,结帖人willis2003]
C中怎么判断字符串为空?
[问题点数:30分,结帖人willis2003]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2005年9月 C/C++大版内专家分月排行榜第二
2004年3月 C/C++大版内专家分月排行榜第三
2007年7月 C/C++大版内专家分月排行榜第一2007年6月 C/C++大版内专家分月排行榜第一2007年5月 C/C++大版内专家分月排行榜第一2007年4月 C/C++大版内专家分月排行榜第一2007年3月 C/C++大版内专家分月排行榜第一2007年2月 C/C++大版内专家分月排行榜第一2007年1月 C/C++大版内专家分月排行榜第一2006年12月 C/C++大版内专家分月排行榜第一2006年11月 C/C++大版内专家分月排行榜第一2006年9月 C/C++大版内专家分月排行榜第一2006年8月 C/C++大版内专家分月排行榜第一2006年7月 C/C++大版内专家分月排行榜第一2006年6月 C/C++大版内专家分月排行榜第一2006年5月 C/C++大版内专家分月排行榜第一2006年4月 C/C++大版内专家分月排行榜第一2006年3月 C/C++大版内专家分月排行榜第一2005年8月 C/C++大版内专家分月排行榜第一
2007年8月 C/C++大版内专家分月排行榜第二2006年10月 C/C++大版内专家分月排行榜第二
2004年3月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分132阅读权限10帖子精华可用积分132 信誉积分641 专家积分0 在线时间361 小时注册时间最后登录
白手起家, 积分 132, 距离下一级还需 68 积分
帖子主题精华可用积分132 信誉积分641 专家积分0 在线时间361 小时注册时间最后登录
论坛徽章:0
aaaa|&&|hello|world|
aaa|bbbb|ccc|ddd|
如何判断以&|&间隔的第二个字符串为空,然后打印出来?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID空间积分0 积分2094阅读权限50帖子精华可用积分2094 信誉积分1555 专家积分0 在线时间1918 小时注册时间最后登录
小富即安, 积分 2094, 距离下一级还需 2906 积分
帖子主题精华可用积分2094 信誉积分1555 专家积分0 在线时间1918 小时注册时间最后登录
论坛徽章:11
if(file_exists(&200.txt&)){
&&$f = fopen('200.txt','r');
& &while(!feof($f)){
& & & && &$line = fgets($f);
& && &$arr=explode('|', $line);
& && &
& &&&if (strlen($arr[1]) == 0){
& &&&& & & &&&print $
& & }& &
& & }
}else{
& & & & echo &file is not find&;
}
?&
结果是
aaaa||hello|world|
[Finished in 0.2s]复制代码
走入程序猿的世界。
(python每日一练)
Keep walking...
UID空间积分0 积分995阅读权限20帖子精华可用积分995 信誉积分736 专家积分0 在线时间537 小时注册时间最后登录
丰衣足食, 积分 995, 距离下一级还需 5 积分
帖子主题精华可用积分995 信誉积分736 专家积分0 在线时间537 小时注册时间最后登录
论坛徽章:9
本帖最后由 lifayi2008 于
20:46 编辑
awk -F'|' '$2~/ +/{print}' c.txt复制代码
压力不是有人比你努力,而是比你牛叉几倍的人依然比你努力
UID空间积分0 积分240阅读权限20帖子精华可用积分304 信誉积分523 专家积分0 在线时间418 小时注册时间最后登录
稍有积蓄, 积分 240, 距离下一级还需 260 积分
帖子主题精华可用积分304 信誉积分523 专家积分0 在线时间418 小时注册时间最后登录
论坛徽章:0
root@ubuntu:~/test# more file
aaaa|&&|hello|world|
aaa|bbbb|ccc|ddd|
root@ubuntu:~/test# awk -F'|' '$2&0' file
aaaa|&&|hello|world|复制代码&&& import re
&&&
&&& def iter(f):
...& &&&s = f.readline().strip()
...& &&&while s:
...& && && &&&yield s
...& && && &&&s = f.readline().strip()
...
&&& with open('file','r') as f:
...& && &for j in iter(f):
...& && && & if re.search(' +',j.split('|')[1]):
...& && && && & print j
...
aaaa|&&|hello|world|复制代码
UID空间积分0 积分58989阅读权限90帖子精华可用积分58989 信誉积分3018 专家积分0 在线时间4978 小时注册时间最后登录
帖子主题精华可用积分58989 信誉积分3018 专家积分0 在线时间4978 小时注册时间最后登录
认证徽章论坛徽章:31
不谨慎~awk -F\| '$2~/^ *$/'复制代码
Keep walking...
UID空间积分0 积分995阅读权限20帖子精华可用积分995 信誉积分736 专家积分0 在线时间537 小时注册时间最后登录
丰衣足食, 积分 995, 距离下一级还需 5 积分
帖子主题精华可用积分995 信誉积分736 专家积分0 在线时间537 小时注册时间最后登录
论坛徽章:9
{:2_168:} 是应该这样写,昨晚还想不通为啥 $2~/ */匹配不到呢回复
yestreenstars
压力不是有人比你努力,而是比你牛叉几倍的人依然比你努力
UID空间积分0 积分240阅读权限20帖子精华可用积分304 信誉积分523 专家积分0 在线时间418 小时注册时间最后登录
稍有积蓄, 积分 240, 距离下一级还需 260 积分
帖子主题精华可用积分304 信誉积分523 专家积分0 在线时间418 小时注册时间最后登录
论坛徽章:0
lifayi2008
* 号可以代表0个,就是没空了
UID空间积分0 积分1023阅读权限30帖子精华可用积分1023 信誉积分957 专家积分0 在线时间894 小时注册时间最后登录
家境小康, 积分 1023, 距离下一级还需 977 积分
帖子主题精华可用积分1023 信誉积分957 专家积分0 在线时间894 小时注册时间最后登录
认证徽章论坛徽章:4
awk -F&|& '! $2 && $2 != 0' file复制代码
UID空间积分0 积分172阅读权限10帖子精华可用积分172 信誉积分280 专家积分0 在线时间214 小时注册时间最后登录
白手起家, 积分 172, 距离下一级还需 28 积分
帖子主题精华可用积分172 信誉积分280 专家积分0 在线时间214 小时注册时间最后登录
论坛徽章:0
大神 awk -F '|' '{if($2~/^ *$/){}}' 这个为什么改成 awk -F '|' '{if($2~/^\s*$/){}}' 就不可以了?
yestreenstars
UID空间积分0 积分58989阅读权限90帖子精华可用积分58989 信誉积分3018 专家积分0 在线时间4978 小时注册时间最后登录
帖子主题精华可用积分58989 信誉积分3018 专家积分0 在线时间4978 小时注册时间最后登录
认证徽章论坛徽章:31
tasteoftime_90
awk不支持\s
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处}

我要回帖

更多关于 判断字符串是否为空 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信