2013-01-25 4 views
2

Access 2010 데이터베이스에서 C# VS 2010을 사용하고 있으며 목록 상자를 채울 때 null 오류 (개체 참조가 개체 인스턴스로 설정되지 않음)가 계속 표시됩니다. 선택한 DropDownList ComboBox에 있습니다. 예를 들어, 사용자는 서구의 콤보 상자에서 영화 장르를 선택합니다. 그런 다음 목록 상자에 해당 장르의 제목이 채워 져야합니다. comboBox.SelectedValue null 오류

나는

ComboBox c = New ComboBox(); 
c = comboBox1; 

를 사용하여 간단하여 주위에 점점 시도하지만 내 목록 상자 아무것도 채워하지 않을 것입니다. 쿼리에서 수동으로 장르를 Western에 설정할 수 있지만이 방법을 사용하지 않으려 고하므로 대용량 시나리오에 적용 할 수 있습니다.

public partial class Form1 : Form 
{ 
    OleDbConnection cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data source = c:\\users\\Nick\\Desktop\\DatabaseTest.accdb"); 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    private void Form1_Shown(object sender, EventArgs e) 
    { 
     try 
     { 
      cn.Open(); 
     } 
     catch (ObjectDisposedException ex) 
     { 
      MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); 
      Application.Exit(); 
     } 
     OleDbCommand cm = new OleDbCommand("SELECT Genre FROM Genre", cn); 
     try 
     { 
      OleDbDataReader dr = cm.ExecuteReader(); 

      while (dr.Read()) 
      { 
       comboBox1.Items.Add(dr["Genre"]); 

      } 
      dr.Close(); 
      dr.Dispose(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 

    //private void button1_Click(object sender, EventArgs e) 
    //{ 

    //} 

    private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e) 
    { 
     OleDbCommand cf = new OleDbCommand("SELECT Title FROM Movies WHERE [email protected]", cn); 
     cf.Parameters.Add("@Genre", comboBox.SelectedValue.ToString()); 

     try 
     { 
      OleDbDataReader dr = cf.ExecuteReader(); 

      while (dr.Read()) 
      { 
       listBox1.Items.Add(dr["Title"]); 
      } 
      dr.Close(); 
      dr.Dispose(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 

    } 

답변

0

당신은 comboBox1 항목을 추가,하지만 comboBox에서 값을 읽고있다. 1의 부족에 유의하십시오.