永发信息网

C# 判断SqlDataReader的结果是空还是NULL

答案:6  悬赏:0  手机版
解决时间 2021-03-02 13:24
例如:
string sql = "select st_brithday from students where st_id = 8";

这条语句在SQL2000的查询分析器中输出的结果是这样的:
1、没有符合st_id = 8条件的记录,数据的结果是空的。
2、有符合条件的记录,但是该学生的生日没有填写是个"NULL"值

现在的问题是用read()不能分辨,FieldCount()结果全都是1,GetSchemaTable().Rows.Count也不能分辨。求一方法能分辨出来查询结果!!
最佳答案
FieldCount属性返回当前行中的列数,你的sql只查询st_brithday这一列,自然永远都返回1.下面来说你提到的两种情况。
1.没有符合条件的记录。
那么查询结果为空,记录集的行数应该是0。你可以去判断SqlDataReader.HasRows,如果返回true,则表示查询到了记录,否则表示没有符合条件的记录集。
2.又符合条件的记录,但是某列值为null,就这样判断:
if(read["st_brithday"] == DBNull.Value)
{
// st_brithday 列为null值。
}
全部回答
判断有没有记录 看是否返回一行数据, 看结果是不是大于0,大于0就是有记录啦。。明白吗?
楼主可以将查询出的数据使用sqlDataReader对象的read()方法读取的时候, 判断sqlDataReader对象[列名]==null。这样的话就可以了。
reader.read()为true的话就肯定有数据,只是这个数据有可能是DBNull DBNull转成C#语言之后就是null对象了 if(reader.read()) { if(reader["st_brithday"] is DBNull ) { messagebox.show("该同学没有填写生日"); } string yy=reader["st_brithday"] is DBNull ? new DateTime(2011, 8, 8) : (DateTime)reader["st_brithday"]; } 具体也不知道你要实现怎么功能,我只能这样提示你了!
1.datareader.isdbnull(datareader.getordinal("栏位名称")) 2.如果是 datatable 的 row 的话 , 要用 row.isnull("栏位名称")
string sql = "select (case when ast_brithday is null then '' else ast_brithday end) as ast_brithday from students where st_id = 8"; DataTable dtTemp=new DataTable (); using (SqlDataReader objReader = cmm.ExecuteReader(CommandBehavior.CloseConnection)) { dtTemp.Columns.Add("st_brithday"); while (objReader.Read()) { DataRow dr = dtTemp.NewRow(); dr[0] = Convert.ToString(objReade["st_brithday"]); dtTemp.Rows.Add(dr); } } } 这样一来,如果没有符合st_id = 8条件的记录,数据的结果是空的, while (objReader.Read())不会往下执行, 如果有符合条件的记录,但是该学生的生日没有填写是个"NULL"值,则会返回空字符串,不会报错
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
常兴农家烧鸡食府地址有知道的么?有点事想过
请问各位高手们,我在深圳福田区有一套没有房
请问从燕郊怎么去三河火车站?
现在西方世界信耶稣基督的人所占比例高吗?
房屋过户费用~户主去世
本人是做汽配的,现在想附带做一下润滑油这块
关于先张法预应力混凝土结构和构件的说法,下
各位大佬,话说三星s8+有完美靠谱的手机膜么
哈尔滨市第十三中学附近有什么公交车
盘玩蜜蜡遇到一个问题,大家有遇到吗?
新版微店怎么设置运费
17世纪英国资产阶级革命是英国历史上一个分水
360保险箱可靠吗?
变速箱电脑板坏了修要多少钱? 贵吗?
东怡路地址有知道的么?有点事想过去
推荐资讯
卓越亚马逊的送货到达时间,会不会比预计的提
【中国沙漠面积】中国的沙漠有多少平方公里?
收缩毛孔洗面奶哪种比较好
星际争霸1.08虫族如何爆农民的BUG?
请别说我累了是哪一首歌的歌词搜索
手机恢复出厂,怎样可以找到手机号码?有的号
博雅幼儿园在哪里啊,我有事要去这个地方
英雄联盟,老鼠哪个皮肤最好看,那个皮肤补刀
百度的火车时刻表和12306的不一样,以哪个为
尿路感染的中医证型,不包括A.肺气失宣B.气滞
胎盘下缘覆盖宫颈内口
lumia手机win10预览版如何关闭小娜
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?