2016-03-28 55 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()); 希望这项工作