2012-07-17 249 views
0

我的場景是從數據庫填充組合框,顯示客戶名稱,並使用標識增量保存id的值。填充組合框

當此代碼運行時,我收到一個錯誤Procedure or function 'spSelectCustomerById' expects parameter '@id', which was not supplied

SqlConnection conn = new SqlConnection(connectionString); 
conn.Open(); 

//SelectCustomerById(int x); 
comboBoxEx1.Items.Clear(); 

SqlCommand comm = new SqlCommand("spSelectCustomerByID", conn); 
//comm.Parameters.Add(new SqlParameter("cust_name", cust_name)); 
//comm.CommandText = "spSelectCustomerByID"; 
comm.Parameters.Add(new SqlParameter("cust_id", SqlDbType.Int)); 
comm.CommandType = CommandType.StoredProcedure; 
comm.ExecuteNonQuery(); 

SqlDataAdapter sdap = new SqlDataAdapter(comm); 
DataSet dset = new DataSet(); 
sdap.Fill(dset, "cust_registrations"); 

if (dset.Tables["cust_registrations"].Rows.Count > 0) 
{ 
    comboBoxEx1.Items.Add("cust_registrations").ToString(); 
} 
comboBoxEx1.DataSource = dset; 
comboBoxEx1.DisplayMember = "cust_name"; 

如何從數據庫填充組合框?

+8

那麼你的問題是什麼? – 2012-07-17 09:16:06

+0

有什麼問題? – 2012-07-17 09:16:51

+3

你爲什麼要做'comm.ExecuteNonQuery();'然後使用dataadapter填充數據集,你不需要'comm.ExecuteNonQuery();' – Habib 2012-07-17 09:20:47

回答

0

對於網絡的ComboBox我們comboBoxEx1.DataValueField = "cust_id";

爲WPF你贏形式使用comboBoxEx1.SelectedValuePath = "cust_id";

使用comboBox1.ValueMember = "cust_id";

+0

我的問題實際上是如何從數據庫中填充組合框。它會帶來錯誤,說明過程或函數'spSelectCustomerById'需要參數'@id',該參數未提供。請有人幫助我。 – yaki 2012-07-17 13:48:08

0
conn.Open(); 

     //SelectCustomerById(int x); 
     comboBoxEx1.Items.Clear(); 
     SqlCommand comm = new SqlCommand("spSelectCustomerByID", conn); 
     //comm.Parameters.Add(new SqlParameter("cust_name", cust_name)); 
     //comm.CommandText = "spSelectCustomerByID"; 
     comm.Parameters.Add(new SqlParameter("@id", SqlDbType.Int)); 
     comm.CommandType = CommandType.StoredProcedure; 
     comm.ExecuteNonQuery(); 
     SqlDataAdapter sdap = new SqlDataAdapter(comm); 
     DataSet dset = new DataSet(); 
     sdap.Fill(dset, "cust_registrations");   
     comboBoxEx1.DataSource = dset; 
     comboBoxEx1.DisplayMember = "cust_name"; 

//添加以下行 //你並不需要添加項目進入組合框。

 comboBoxEx1.ValueMember = "cust_id"; 
     comboBoxEx1.DataBind(); 
+0

我的問題實際上是如何從數據庫中填充組合框。它會帶來錯誤,說明過程或函數'spSelectCustomerById'需要參數'@id',該參數未提供。請有人幫助我。我爲此使用此代碼,但它不工作.. – yaki 2012-07-17 13:48:51

+0

如果錯誤是「@id」,那麼爲什麼你通過了「@cust_id」。 嘗試
comm.Parameters.Add(new SqlParameter(「@ id」,SqlDbType.Int)); – 2012-07-17 16:10:54