2016-05-12 37 views
0

我更新我的表使用此代碼:System.Data.SqlClient.SqlException nvarchar的浮動

private void AddToQuotation() 
    { 
     con.Open(); 
     cmd = new SqlCommand(@"update JobQuotations 
           set quo_discount  = @discount 
           ,  quo_unitPrice = @unitPrice 
           ,  quo_TotalAmount = @totalAmount 
           ,  quo_finishing = @finishing 
           where quo_custname = @customername 
           and quo_verified = 'Yes'", con); 

     cmd.Parameters.AddWithValue("@customername",DropDownList3.SelectedItem.Value.ToString()); 
     cmd.Parameters.AddWithValue("@discount",txtDisc.Text); 
     cmd.Parameters.AddWithValue("@unitPrice",txtUnitPrice.Text); 

     cmd.Parameters.AddWithValue("@finishing",txtFinishing.Text); 
     cmd.Parameters.AddWithValue("@totalAmount",lblTotalAmount.Text); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
     string script = "alert(\"Functioning!\");"; 

     ScriptManager.RegisterStartupScript(this, GetType(), 
      "ServerControlScript", script, true); 
    } 

,我不斷收到此錯誤:

我最後

An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code

Additional information: Error converting data type nvarchar.

此代碼工作我不知道發生了什麼事。

+0

總是在客戶端轉換,所以fe與'decimal.Parse',更重要的是,如果你使用'AddWithValue'而不是'Add'。 –

+0

什麼是JobQuotations列的數據類型? – Lithium

+0

這樣的事情?'cmd.Parameters.AddWithValue(「@ discount」,double.Parse(txtDisc.Text));' –

回答

2

我建議你使用SqlDbType並把每個參數爲相應類型的數據庫是這樣的:

cmd.Parameters.Add (new SqlParameter("@unitPrice", SqlDbType.Float).Value = txtUnitPrice.Text ; 

+0

我總是爲顯式類型聲明,所以沒有什麼有趣的事情發生。我個人做了一些可以歸結爲:'cmd.Parameters.Add(new SqlParameter(「@ unitPrice」,SqlDbType.Float){Value = Convert.ToDouble(txtUnitPrice.Text);})' – Lithium

+0

我還在錯誤。 –

+0

你是否爲所有參數改變了sysntax? –

0

您是否更改了數據庫中字段的數據類型並且不接受該值?如果你沒有,那麼你必須....因爲數據類型是不同的

相關問題