A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 蔓越莓 于 2013-6-17 21:23 编辑

用ExecuteReader()在逐条查FName的时候,有一个是Null,就报错了。这要怎么处理?
  1. private void button1_Click(object sender,

  2. RoutedEventArgs e)
  3.         {

  4.             using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=mydb2;User ID=sa;Password=123456"))
  5.             {
  6.                 conn.Open();
  7.                 using (SqlCommand cmd = conn.CreateCommand())
  8.                 {
  9.                     cmd.CommandText = "select * from T_employee where FAge<100";
  10.                     using (SqlDataReader reader = cmd.ExecuteReader())
  11.                     {
  12.                     while(reader.Read())
  13.                     {
  14.                         string name=reader.GetString(1);
  15.                         MessageBox.Show(name);
  16.                     }
  17.                   
  18.                     }
  19.                 }
  20.                 MessageBox.Show("execute accomplish");
  21.             }
  22.         }
复制代码

2013-6-16 19-42-20.jpg (38.54 KB, 下载次数: 0)

2013-6-16 19-42-20.jpg

搜狗截图_2013-06-16_19-41-46.png (57.7 KB, 下载次数: 0)

搜狗截图_2013-06-16_19-41-46.png

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

4 个回复

倒序浏览
本帖最后由 蔡志涛 于 2013-6-16 21:12 编辑

读取数据库中为null的值的时候需要对数据库中的null进行转换,因为数据中的null值返回的是DBNull.value,需要把这个值转换成C#中的null。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
杨老师 讲人事管理系统里讲过DBnull和null的相互转换,数据库中存储的是DBnull,C#中用的是null。

public static object FromDBValue(object value)
        {
            if (value == DBNull.Value)
            {
                return null;
            }
            else
            {
                return value;
            }
        }

        public static object ToDBValue(object value)
        {
            if (value == null)
            {
                return DBNull.Value;
            }
            else
            {
                return value;
            }
        }

放入SQLHelper中,用的时候调用一下就行了。
回复 使用道具 举报
需要把数据库返回的DBNull.value转换成C#中的null才行
回复 使用道具 举报
明白了,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马