我在组合框值处有一个空引用的例外。我在数据库中允许null。但它不起作用。我该怎么办?我在评论中提到了异常区域:这是我的源代码。
private void button1_Click(object sender, EventArgs e)
{
con.Open();
cmd.CommandText = "insert into mytable (userid, password, gender) values (@userid, @password, @gender)";
cmd.Parameters.AddWithValue("@userid", textBox1.Text);
cmd.Parameters.AddWithValue("@password", textBox2.Text);
cmd.Parameters.AddWithValue("@gender", comboBox1.SelectedItem.ToString());//Here is exception line (NullReference Exception)
cmd.ExecuteNonQuery();
cmd.Clone();
con.Close();
MessageBox.Show("Record Added");
}
private void Form2_Load(object sender, EventArgs e)
{
cmd.Connection = con;
}
答案 0 :(得分:0)
这几乎总是很容易追踪,你做到了!所以答案很简单:什么都不是。您需要检查是否已选择某个项目,因为comboBox1.SelectedItem
可以是null
。
所以,......
if (comboBox1.SelectedItem != null) {
或者......,
if (comboBox1.SelectedIndex > 0) {
一般情况下,你会有一些验证可以阻止它进入此阶段。
答案 1 :(得分:0)
如果comboBox1.SelectedItem
为空,则无法调用ToString()
函数。 (那是你的错误)
使用:
cmd.Parameters.AddWithValue("@gender", comboBox1.SelectedItem == null ? null : comboBox1.SelectedItem.ToString());