无法将参数值从String转换为Decimal。

时间:2014-05-26 20:22:07

标签: c# sql ado.net

我有以下ADO.NET代码,其中我面临例外:

Failed to convert parameter value from a String to a Decimal.

这段代码一直运行到昨晚,但我认为发生了一些不寻常的事情。

try
{
    da.InsertCommand = new SqlCommand(@"INSERT INTO ITEM_DETAILS VALUES(@ITEM_MODEL,@ITEM_NAME,@ITEM_DESCRIPTION,@VENDOR_NAME,@QUANTITY,@RATE,'',@INVOICE_NUM,@DATE,@Discount)", con);
    da.InsertCommand.Parameters.Add("@ITEM_MODEL", SqlDbType.VarChar).Value = txtItemModel.Text;
    da.InsertCommand.Parameters.Add("@ITEM_NAME", SqlDbType.VarChar).Value = txtItemName.Text;
    da.InsertCommand.Parameters.Add("@ITEM_DESCRIPTION", SqlDbType.VarChar).Value = txtItemDescription.Text;
    da.InsertCommand.Parameters.Add("@VENDOR_NAME", SqlDbType.VarChar).Value = txtVendor.Text;
    da.InsertCommand.Parameters.Add("@QUANTITY", SqlDbType.Int).Value = txtQuantity.Text;
    da.InsertCommand.Parameters.Add("@RATE", SqlDbType.Money).Value = txtRate.Text;
    // da.InsertCommand.Parameters.Add("@AMOUNT", SqlDbType.Money).Value = txtAmount.Text;
    da.InsertCommand.Parameters.Add("@INVOICE_NUM", SqlDbType.Int).Value = txtInvoice.Text;
    da.InsertCommand.Parameters.Add("@DATE", SqlDbType.Date).Value = (dateTimePicker1.Value);
    da.InsertCommand.Parameters.Add("@Discount", SqlDbType.Money).Value = txtDiscount.Text;
    con.Open();
    da.InsertCommand.ExecuteNonQuery();
    con.Close();
}
catch
{
    MessageBox.Show("Something wrong enters", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}

我试过但没有找到这个例外的解决方案。任何帮助都会非常明显。

1 个答案:

答案 0 :(得分:0)

INSERT语句的定义中,在@RATE@INVOICE_NUM之间,您引入了一个空字符串值。也许可能是这个问题?

使用您的Parameters.Add方法调用,我希望在这个地方可能是@AMOUNT参数,实际上是评论过的。也许这就是您将列值直接设置为''的原因。

如果此值适合您,请尝试将''值替换为0