例如:
string sql = "select st_brithday from students where st_id = 8";
这条语句在SQL2000的查询分析器中输出的结果是这样的:
1、没有符合st_id = 8条件的记录,数据的结果是空的。
2、有符合条件的记录,但是该学生的生日没有填写是个"NULL"值
现在的问题是用read()不能分辨,FieldCount()结果全都是1,GetSchemaTable().Rows.Count也不能分辨。求一方法能分辨出来查询结果!!
C# 判断SqlDataReader的结果是空还是NULL
答案:6 悬赏:0 手机版
解决时间 2021-03-02 13:24
- 提问者网友:凉末
- 2021-03-02 07:00
最佳答案
- 五星知识达人网友:孤老序
- 2021-03-02 07:35
FieldCount属性返回当前行中的列数,你的sql只查询st_brithday这一列,自然永远都返回1.下面来说你提到的两种情况。
1.没有符合条件的记录。
那么查询结果为空,记录集的行数应该是0。你可以去判断SqlDataReader.HasRows,如果返回true,则表示查询到了记录,否则表示没有符合条件的记录集。
2.又符合条件的记录,但是某列值为null,就这样判断:
if(read["st_brithday"] == DBNull.Value)
{
// st_brithday 列为null值。
}
1.没有符合条件的记录。
那么查询结果为空,记录集的行数应该是0。你可以去判断SqlDataReader.HasRows,如果返回true,则表示查询到了记录,否则表示没有符合条件的记录集。
2.又符合条件的记录,但是某列值为null,就这样判断:
if(read["st_brithday"] == DBNull.Value)
{
// st_brithday 列为null值。
}
全部回答
- 1楼网友:野慌
- 2021-03-02 13:17
判断有没有记录 看是否返回一行数据, 看结果是不是大于0,大于0就是有记录啦。。明白吗?
- 2楼网友:人類模型
- 2021-03-02 11:45
楼主可以将查询出的数据使用sqlDataReader对象的read()方法读取的时候,
判断sqlDataReader对象[列名]==null。这样的话就可以了。
- 3楼网友:话散在刀尖上
- 2021-03-02 10:12
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"];
}
具体也不知道你要实现怎么功能,我只能这样提示你了!
- 4楼网友:酒醒三更
- 2021-03-02 08:45
1.datareader.isdbnull(datareader.getordinal("栏位名称"))
2.如果是 datatable 的 row 的话 , 要用 row.isnull("栏位名称")
- 5楼网友:十年萤火照君眠
- 2021-03-02 08:11
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"值,则会返回空字符串,不会报错
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯