我可以';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
你可以试试这个:-
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.的一部分