2016-03-03 34 views
0

我在ExecuteNonQuery();上連續發生錯誤。我嘗試過很多方法,但不知道自己錯在哪裏。ExecuteNonQuery()中的錯誤

我正在使用float SQL Server中的orderid,price,quantity,discount,order price列的數據類型。

請幫忙。

string query = "Insert into dbo.orders (OrderType,Product_Name,Product_Category,Product_Quantity,Product_Price,Date,Discount) values(@txt_rdvalue,@cb_oname,@cb_ocat,@cb_oqty,@txt_oprice,@Date,@txt_disc)"; 

if (string.IsNullOrWhiteSpace(txt_rdvalue.Text) || string.IsNullOrWhiteSpace(cb_oname.Text) || string.IsNullOrWhiteSpace(cb_ocat.Text) || string.IsNullOrWhiteSpace(cb_oqty.Text)) 
{ 
    lbl_incorrect.Text = "please fill up all the fields"; 
    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.AddWithValue("@txt_rdvalue",txt_rdvalue.Text); 
      cmd.Parameters.AddWithValue("@txt_orderid",txt_orderid.Text); 
      cmd.Parameters.AddWithValue("@cb_oname", cb_oname.SelectedText); 
      cmd.Parameters.AddWithValue("@cb_ocat", cb_ocat.SelectedText); 
      cmd.Parameters.AddWithValue("@cb_oqty", cb_oqty.SelectedValue); 
      cmd.Parameters.AddWithValue("@txt_oprice", (txt_oprice.Text)); 
      cmd.Parameters.AddWithValue("@txt_disc", txt_rdvalue.Text); 
      cmd.Parameters.Add(new SqlParameter("@Date", dateTimePicker1.Value.Date)); 

      cmd.ExecuteNonQuery(); 

      MessageBox.Show("Data Inserted"); 
     } 
    } 
} 

該錯誤消息我得到:

的參數化查詢 '(@txt_rdvalue nvarchar的(8),@ txt_orderid INT,@ cb_oname爲nvarchar(40' 預計參數 '@cb_oqty' ,這是 不提供

+0

你只檢查 'string.IsNullOrWhiteSpace(txt_rdvalue.Text)|| string.IsNullOrWhiteSpace(cb_oname.Text)|| string.IsNullOrWhiteSpace(cb_ocat.Text)|| string.IsNullOrWhiteSpace(cb_oqty.Text)' 但還有其他四個值。您需要確保所有不是空值。否則這些類型的異常將被拋出。 – VVN

+0

標記dbms產品! (該代碼根本不像ANSI SQL。) – jarlh

+1

您的'cmd.CommandType = CommandType.Text;'和'cmd.Connection = con;'行是不必要的。在執行命令之前,還要打開您的連接_just_。 –

回答

1
yes i have done it. The convert to double thing works 
thankyou all 
Appriciated.[enter link description here][1] 



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.SelectedText); 
         cmd.Parameters.AddWithValue("@cb_ocat", cb_ocat.SelectedText); 
         cmd.Parameters.AddWithValue("@cb_oqty", Convert.ToDouble(cb_oqty.SelectedValue)); 
         cmd.Parameters.AddWithValue("@txt_oprice",Convert.ToDouble((txt_oprice.Text))); 
         cmd.Parameters.AddWithValue("@txt_disc",Convert.ToDouble(txt_disc.Text)); 
         cmd.Parameters.Add(new SqlParameter("@Date", dateTimePicker1.Value.Date)); 


    [1]: http://www.stackoverflow.com/alygorejaanswers 
0

您提供@txt_orderidcmd.Parameters.AddWithValue("@txt_orderid",txt_orderid.Text);)不再次exists.Check代碼參數。

如果它是autoincrement coloumn你爲什麼要提供這個。

另外數據類型不匹配正在發生。

+0

我只是更新它 –

+0

我再次得到相同的錯誤 –

+0

我提供這個,因爲它從db中的另一個表遞增 –

相關問題