2016-05-12 3 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 (новый SqlParameter (" @ unitPrice ", SqlDbType.Float) {Value = Convert.ToDouble (txtUnitPrice.Text);})' – Lithium

+0

Я все еще получаю Ошибка. –

+0

Вы меняете sysntax для всех параметров? –

0

Вы изменили тип данных поля в своей БД и он не принимает значение? если вы не то вам придется .... потому что типы данных отличаются

Смежные вопросы