2016-03-28 50 views
0

當我從組合框(cb_oname)中選擇一個項目並輸入順序,然後程序崩潰並在executenonquery()發生錯誤,我在下面突出顯示 實際上,當我單擊提交順序按鈕。該cb_ocat是該項目的類別的數據類型是vnarchar(50)參數化的查詢錯誤c#

string query = @"Insert into dbo.orders 
(OrderType,OrderID,Product_Name, Product_category,Product_Quantity, 
Product_Price,Date,Discount,Order_Price,Phone) values 
(@txt_rdvalue,@txt_orderid,@cb_oname,@cb_ocat,@cb_oqty, 
@txt_oprice,@Date,@txt_disc,@txt_orderprice,@txt_call)"; 

if (string.IsNullOrWhiteSpace(txt_rdvalue.Text) || string.IsNullOrWhiteSpace(txt_orderid.Text) || string.IsNullOrWhiteSpace(cb_oname.Text) || string.IsNullOrWhiteSpace(cb_ocat.Text) || string.IsNullOrWhiteSpace(cb_oqty.Text) || string.IsNullOrWhiteSpace(txt_oprice.Text) || string.IsNullOrWhiteSpace(txt_disc.Text)) 
{ 
    lbl_incorrect.Visible = true; 
} 
else 
{ 
    using (SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=Pizza Mania;Integrated Security=True")) 
    { 
     using (SqlCommand cmd = new SqlCommand(query, con)) 
     { 
      cmd.CommandType = CommandType.Text; 
      cmd.Connection = con; 
      con.Open(); 


      cmd.Parameters.Add(new SqlParameter("@Date", dateTimePicker1.Value.Date)); 
      cmd.Parameters.AddWithValue("@txt_rdvalue", txt_rdvalue.Text); 
      cmd.Parameters.AddWithValue("@txt_orderid", Convert.ToDouble(txt_orderid.Text)); 
      cmd.Parameters.AddWithValue("@cb_oname", cb_oname.SelectedItem); 
      cmd.Parameters.AddWithValue("@cb_ocat", cb_ocat.SelectedItem); 
      cmd.Parameters.AddWithValue("@cb_oqty", Convert.ToDouble(cb_oqty.SelectedItem)); 
      cmd.Parameters.AddWithValue("@txt_oprice", Convert.ToDouble((txt_oprice.Text))); 
      cmd.Parameters.AddWithValue("@txt_disc", Convert.ToDouble(txt_disc.Text)); 
      cmd.Parameters.AddWithValue("@txt_orderprice", txt_orderprice.Text); 
      cmd.Parameters.AddWithValue("@txt_call", txt_call.Text); 
      if (txt_call.Text == null) 
      { 
       cmd.Parameters.AddWithValue(@"txt_call", txt_call.Text == null); 
      } 



      cmd.ExecuteNonQuery();// here i am getting the error that the parameterized query cb_' expects the parameter cb_ocat which was not supplied. 

      //MessageBox.Show("Order Inserted"); 

      con.Close(); 
     } 
+0

_cmd.Parameters.AddWithValue(@「txt_call」,txt_call.Text == null); _你能解釋這一行嗎? – TaW

+2

由於您發佈的異常,所選的cb_ocat項目顯然爲空。 –

+0

@TaW該行是無用的,但無關緊要,因爲txt_Call.Text永遠不會爲空 – Steve

回答

1

倒沒肯定這一點,但

如果cb_oact是字符串,嘗試將其轉換爲字符串 cmd.Parameters.AddWithValue (「@cb_ocat」,cb_ocat.SelectedItem.ToString()); 希望這項工作