数据为空.不能对空值调用此方法或属性.(使用组合框)
本文关键字:属性 组合 此方法 不能 值调用 空值 数据 | 更新日期: 2023-09-27 18:11:35
嗨,我在一个表中有一个空值,我将用它来填充一个组合框。我不知道该怎么做。当我运行下面的代码时,我得到了错误:
数据为空。不能对空值调用此方法或属性。
我需要帮助,我是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方法检查它们是否为空,并选择您想要放在文本框中的值。通常为空字符串
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语句。这将确保在您不再需要它们时正确关闭和处理它们,也可以在出现异常的情况下.....