我可以';t将双精度设置为Parameters.AddWithValue

本文关键字:设置 Parameters AddWithValue 双精度 我可以 | 更新日期: 2023-09-27 18:27:47

我正在尝试将小数添加到数字中。示例:1.45,46.12,但我得到了一个例外。

cn.Open();
string sqlquery = ("INSERT INTO table(ID, Name, Price, HowMuch, Localization, Description) VALUES(@ID, @Name, @Price, @HowMuch, @Localization, @Description)");
SqlCeCommand cm = new SqlCeCommand(sqlquery, cn);
cm.Parameters.AddWithValue("@ID", textBox1.Text);
cm.Parameters.AddWithValue("@Name", textBox2.Text);
cm.Parameters.AddWithValue("@Price", textBox3.Text);
cm.Parameters.AddWithValue("@HowMuch", textBox4.Text);
cm.Parameters.AddWithValue("@Localization", textBox5.Text);
cm.Parameters.AddWithValue("@Description", textBox6.Text);

异常消息:"输入字符串的格式无效。"。我使用的是System.Data.SqlServerCe

我可以';t将双精度设置为Parameters.AddWithValue

你可以试试这个:-

 SqlCeParameter parameter = new SqlCeParameter();
 parameter.SqlDbType = SqlDbType.Decimal;
 parameter.Precision = 18;
 parameter.Scale = 0;
 parameter.Value = textBox3.Text;
cm.Parameters.Add(parameter);

至少应该使用以下内容:

cm.Parameters.AddWithValue("@Price", string.Format("{0:C}", textBox3.Text));

但是,在没有任何控制的情况下,将用户值直接设置为浮点值有点棘手。然后做一些类似的事情:

try
{
  cm.Parameters.AddWithValue("@Price", string.Format("{0:C}", textBox3.Text));
}
catch
{
  /// do something to alert user value is not corretly formatted
}

我认为首先确保textBox3.Text是有效的十进制是个好主意。。。在进入插入例程之前。

decimal price = Convert.ToDecimal(textBox3.Text);

然后您可以添加参数和值:

using System.Data;
cm.Parameters.Add("@Price", SqlDbType.Decimal).Value = price;

SqlDbType是System.Data.的一部分