(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;"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM