无法将参数值从字符串转换为小数。 C#?

时间:2014-03-01 21:06:55

标签: c# sql

您好我想在后端使用Sql server在C#中更新我的ITEM_DETAILS表,但是当我这样做时,我收到以下错误:

failed to convert parameter value from a string to a decimal. c#

这是我的代码:

int x;

da.UpdateCommand = new SqlCommand("UPDATE ITEM_DETAILS SET ITEM_NAME=@ITEM_NAME,ITEM_DESCRIPTION=@ITEM_DESCRIPTION,VENDOR_NAME=@VENDOR_NAME,QUANTITY=@QUANTITY,RATE=@RATE,AMOUNT=@AMOUNT,INVOICE_NUM=@INVOICE_NUM,DATE=@DATE WHERE ITEM_MODEL=@ITEM_MODEL", con);
da.UpdateCommand.Parameters.Add("@ITEM_NAME", SqlDbType.VarChar).Value = txtItemName.Text;
da.UpdateCommand.Parameters.Add("@ITEM_DESCRIPTION", SqlDbType.VarChar).Value = txtItemDescription.Text;
da.UpdateCommand.Parameters.Add("@VENDOR_NAME", SqlDbType.VarChar).Value = txtVendor.Text;
da.UpdateCommand.Parameters.Add("@QUANTITY", SqlDbType.Int).Value = txtQuantity.Text;
da.UpdateCommand.Parameters.Add("@RATE", SqlDbType.Money).Value = txtRate.Text;
da.UpdateCommand.Parameters.Add("@AMOUNT", SqlDbType.Money).Value = txtAmount.Text;
da.UpdateCommand.Parameters.Add("@INVOICE_NUM", SqlDbType.Int).Value = txtInvoice.Text;
da.UpdateCommand.Parameters.Add("@DATE", SqlDbType.VarChar).Value = dateTimePicker1.Value;
da.UpdateCommand.Parameters.Add("@ITEM_MODEL", SqlDbType.VarChar).Value = ds.Tables[0].Rows[bs.Position][0];

con.Open();
x = da.UpdateCommand.ExecuteNonQuery();
con.Close();

if (x >= 1)
{
    MessageBox.Show("Record(s) has been updated");
}

有人能解释一下这个问题的解决方案吗?

1 个答案:

答案 0 :(得分:1)

da.UpdateCommand.Parameters.Add("@RATE", SqlDbType.Money).Value = txtRate.Text;
da.UpdateCommand.Parameters.Add("@AMOUNT", SqlDbType.Money).Value = txtAmount.Text;

您需要将txtRate.Text和txtAmount.Text解析为Currency。

string.Format("{0:#.00}", Convert.ToDecimal(myMoneyString) / 100);

请参阅Convert String to Money

在VB中,我们将使用CType()转换。