2016-05-12 72 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

您是否更改了数据库中字段的数据类型并且不接受该值?如果你没有,那么你必须....因为数据类型是不同的

相关问题