zoukankan      html  css  js  c++  java
  • (10)C#之ADO.NET 数据库中的NULL值的插入与读取

    在建立数据库的时候,我们可以把字段类型设置为可空或者非可空。如果遇到某些字段可空的时候我们应该如何插入NULL值得数据,以及如何读取NULL值得数据呢?这里用一个小案例来分析这个问题。

    ①首先当然是建立一个数据库表,其中有两个可空字段,一个非空字段。具体如下图:

      

    ②新建一个窗口,在这个窗口上放上三个TextBox,分别用来给用户输入要导入的Name,Age,Height。然后再放入两个Button控件,一个用来向数据库插入这些输入,一个用来导出数据库中的数据。如下图

    ③先来讲解insert按钮,在这个按钮的Click事件中写入这些代码:

            private void button1_Click(object sender, RoutedEventArgs e)
            {
                string name = textBox1.Text;
                string age = textBox2.Text;
                int height = Convert.ToInt32(textBox3.Text);
                Object objName;
                if (name.Length <= 0)
                {
                    objName = DBNull.Value;
                }
                else 
                {
                    objName = name;
                }
                Object objAge;
                if (age.Length <= 0)
                {
                    objAge = DBNull.Value;
                }
                else
                {
                    objAge = age;
                }
    
                SqlHelper.ExecuteNonQuery("Insert into T_Person values (@name,@age,@height)",
                    new SqlParameter("@name",objName),
                    new SqlParameter("@age",objAge),
                    new SqlParameter("@height",height));
                MessageBox.Show("插入成功");
            }

    ◇DBNull.Value是用来表示数据中的Null值的。

    ◇因为DBNull.Value不是string类型的,所以为了方便,我们分别创建了一个Object类型的objName以及objAge来接受这个DBNull.Value的值。

    ◇这样无论用户是否有在TextBox中输入name或者age,都可以顺利的将输入的数据插入数据库。

    ④插入数据完了之后自然就是读取数据,在select按钮的Click事件中写下如下代码:

            private void button2_Click(object sender, RoutedEventArgs e)
            {
               
                DataTable dt = SqlHelper.ExecuteDataTable("select * from T_Person");
                foreach (DataRow dr in dt.Rows)
                {
                    string name;
                    int? age;
                    if (dr["Name"] == DBNull.Value)
                    {
                      name = null;
                    }
                    else
                    {
                      name = (string)dr["Name"];
                    }
                    if (dr["Age"] == DBNull.Value)
                    {
                        age = null;
                    }
                    else
                    {
                        age = (int)dr["Age"];
                    }
                    int height = (int)dr["Height"];
                    MessageBox.Show("姓名:"+name+"  年龄:"+age+"  身高:"+height);
                }
                
            }

    ◇这些代码比较简单,只有一点,有些类型是可空的,例如string类型。可是又有些类型是不可空的,例如int,bool等类型。

    ◇可空的类型可以接收null值,不可空的类型不能接收null值。

    ◇如果想让不可空的类型接收null值,那么就在声明变量的时候,在类型的后面加上一个“?”,例如,想要申请一个可空的int类型,如上代码可以这样写道:"int? age;"

  • 相关阅读:
    升级WP应用时注意的问题——WMAppManifest.xml
    MVVM Light (Part 4)
    Windows Phone 7的About模板——Your Last About Dialog(2)支持多语言
    MVVM Light 开始
    在ScheduledTaskAgent中使用HttpWebRequest
    年会抽奖程序 支持单次单个抽奖和单次多个抽奖,自定义抽奖设置
    WIndows Phone 7的MVVM Light框架
    MVVM Light (Part 3)
    MVVM Light 行为
    [转]如何在设计中应用颜色搭配技巧
  • 原文地址:https://www.cnblogs.com/kaolalovemiaomiao/p/4708548.html
Copyright © 2011-2022 走看看