0

我在组合框值处有一个空引用异常。我允许在数据库中为空。但它不起作用。我应该怎么办?我在评论中提到了异常区域:这是我的源代码。

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;
}
4

2 回答 2

0

这些几乎总是很容易追踪,而您做到了!所以答案很简单:什么都不是。您需要检查是否选择了某个项目,因为comboBox1.SelectedItem可以null.

所以, ...

if (comboBox1.SelectedItem != null) {

或者, ...

if (comboBox1.SelectedIndex > 0) {

通常,您会进行一些验证,以防止它发生这种情况。

于 2013-02-27T13:45:39.123 回答
0

如果comboBox1.SelectedItem为null,则不能调用该ToString()函数。(那是你的错误)

利用:

cmd.Parameters.AddWithValue("@gender", comboBox1.SelectedItem == null ? null : comboBox1.SelectedItem.ToString());
于 2013-02-27T13:47:05.807 回答