黑马程序员技术交流社区

标题: ExecuteReader()在查的时候如果碰到Null怎么办? [打印本页]

作者: 蔓越莓    时间: 2013-6-16 21:02
标题: ExecuteReader()在查的时候如果碰到Null怎么办?
本帖最后由 蔓越莓 于 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

作者: 蔡志涛    时间: 2013-6-16 21:10
本帖最后由 蔡志涛 于 2013-6-16 21:12 编辑

读取数据库中为null的值的时候需要对数据库中的null进行转换,因为数据中的null值返回的是DBNull.value,需要把这个值转换成C#中的null。
作者: aa26963    时间: 2013-6-16 23:30
杨老师 讲人事管理系统里讲过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中,用的时候调用一下就行了。
作者: 成都—陈超    时间: 2013-6-17 09:45
需要把数据库返回的DBNull.value转换成C#中的null才行
作者: 蔓越莓    时间: 2013-6-17 21:23
明白了,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2