2014-07-04 31 views
3

您好我有,我會用它來填充組合框的表空值。我不知道如何做到這一點。當我運行下面的代碼我得到的錯誤:數據爲空。此方法或屬性不能被稱爲對空值。(使用組合框)

Data is Null. This method or property cannot be called on null values.

我需要幫助,我是新來的mysql

代碼:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string constring = "datasource=localhost;port=3306;username=root;password=root"; 
    string Query = "SELECT * from database.check WHERE patientname IS NOT NULL"; 
    MySqlConnection conDataBase = new MySqlConnection(constring); 
    MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase); 
    MySqlDataReader myReader; 

    try 
    { 
     conDataBase.Open(); 
     myReader = cmdDataBase.ExecuteReader(); 

     while (myReader.Read()) 
     { 
      string namethestore = myReader.GetString("namethestore"); 
      string checkername = myReader.GetString("checkername"); 
      this.textBox65.Text = namethestore; 
      this.textBox66.Text = checkername; 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
+0

你可以在你面前添加Sytem.DBNull.Value的校驗值分配給Text屬性你的文本框,請參閱http://stackoverflow.com/questions/10431835/dbnull-if-statement – VMai

+0

首先,你到底得到的異常,其次,不會簡單的空檢查做把戲嗎? – PiotrWolkowski

回答

7

當一個或多個您域包含一個NULL(DBNull.Value),你不能在它們上使用GetString
你需要檢查它們是否爲空使用IsDBNull方法,並選擇要放置在文本框中,而不是什麼價值。通常它是一個空字符串

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string constring = "datasource=localhost;port=3306;username=root;password=root"; 
    string Query = "SELECT * from database.check WHERE patientname IS NOT NULL"; 
    using(MySqlConnection conDataBase = new MySqlConnection(constring)) 
    using(MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase)) 
    { 
     try 
     { 
      conDataBase.Open(); 
      using(MySqlDataReader myReader = cmdDataBase.ExecuteReader()) 
      { 
       int namePos = myReader.GetOrdinal("namethestore"); 
       int checkerPos = myReader.GetOrdinal("checkername"); 
       while (myReader.Read()) 
       { 
        string namethestore = myReader.IsDBNull(namePos) 
              ? string.Empty 
              : myReader.GetString("namethestore"); 
        string checkername = myReader.IsDBNull(checkerPos) 
              ? string.Empty 
              : myReader.GetString("checkername"); 
        this.textBox65.Text = namethestore; 
        this.textBox66.Text = checkername; 
       } 
      } 
     } 
} 

我也建議圍繞一次性物品使用using statement。這將確保正確的關閉和廢棄時,你不需要他們了,也異常的情況下.....

+0

我嘗試,但我得到一個錯誤:\t「MySql.Data.MySqlClient.MySqlDataReader」不包含關於「IsBNull」和沒有擴展方法的定義「IsBNull」接受類型「MySql.Data.MySqlClient.MySqlDataReader」的第一個參數可以找到(你是否缺少使用指令或程序集引用?) – user3806048

+0

這是一個錯字。方法名稱是IsDBNull。 – Steve

+0

謝謝,一切都很好! – user3806048

相關問題