数据库输入期间的空引用异常C#

时间:2013-02-27 13:43:50

标签: c# nullreferenceexception

我在组合框值处有一个空引用的例外。我在数据库中允许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;
}

2 个答案:

答案 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());