数据是空的。 无法在空值上调用此方法或属性。(使用combobox)

嗨,我在一个表中有空值,我将用于填充combobox。 我不知道该怎么做。 当我运行以下代码时,我收到错误:

数据是空的。 无法在空值上调用此方法或属性。

我需要帮助,我是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); } } 

当一个或多个字段包含NULL(DBNull.Value)时,您不能对它们使用GetString
您需要使用IsDBNull方法检查它们是否为null,并选择要在文本框中放置的值。 通常它是一个空字符串

 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语句 。 这将确保在您不再需要它们时正确关闭和处理,如果出现exception…..