2013-02-27 3 views
0

나는 combobox 값에서 Null 참조 예외가 있습니다. 데이터베이스에서 null을 허용합니다. 그러나 그것은 효과가 없습니다. 어떻게해야합니까? 코멘트에서 예외 영역을 언급합니다. 여기에 내 소스 코드가 있습니다.NullReference 예외 C# 동안 데이터베이스 entary

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

이들은 거의 항상 추적하기가 쉽습니다. 따라서 대답은 쉽습니다. 무언가는 없습니다. comboBox1.SelectedItemnull 일 수 있으므로 항목을 선택했는지 여부를 확인해야합니다.

그래서 ...

if (comboBox1.SelectedItem != null) { 

을 또는 ...

if (comboBox1.SelectedIndex > 0) { 

는 일반적으로 당신이이 오는 것을 방지 몇 가지 검증을 할 것입니다.

+0

감사합니다. 그것은 작동합니다. 하지만 콤보 박스의 null 값을 데이터베이스에 추가하려면 왜 처리해야합니까? –

+0

@ TahirAziz 다른 점은 데이터베이스가 지원하는 경우 매우 자유롭게 'null'을 삽입 할 수 있다는 것입니다. . NET에서, 당신이 할 수있는 일은, 당신이 여기에서하고있는 것 인 "null"에 대한 액세스 _ 멤버 인 것입니다. 따라서 멤버에 액세스하기 전에'null'을 체크하고,'null'이라면 그 값을 삽입하고, 그렇지 않으면 값을 사용하십시오. –

+0

@TahirAziz DB에서 값을 null로 지정하려면 다음과 같이합니다. cmd.Parameters.AddWithValue ("@ gender", comboBox1.SelectedItem == null? DBNull.Value : (object) comboBox1.SelectedItem.ToString ()); –

0

comboBox1.SelectedItem이 null 인 경우 ToString() 함수를 호출 할 수 없습니다. (당신의 오류 먹으 렴)

사용 :

cmd.Parameters.AddWithValue("@gender", comboBox1.SelectedItem == null ? null : comboBox1.SelectedItem.ToString());