我正在尝试将具有十进制值的文本框插入sql。 如果文本框包含点,则可以正常工作,但是如果有人使用逗号而不是点怎么办?我该如何捕捉这两种情况?
示例我要插入值1,9
var map = L.map('map', {
renderer: L.canvas()
});
我正在将数据类型varchar转换为float时出错。 我需要用户将其放入文本框,点或逗号中的任何内容,以将其作为浮点值转换为sql
答案 0 :(得分:1)
如果您不知道用户是使用逗号还是句点作为小数点分隔符(不了解其区域性),则可以尝试两种方式。下面是一个参数化的示例。
decimal decimalValue;
NumberFormatInfo formatWithPeriod = CultureInfo.InvariantCulture.NumberFormat;
if (!Decimal.TryParse(textBox.Text, NumberStyles.AllowDecimalPoint, formatWithPeriod, out decimalValue))
{
NumberFormatInfo formatWithComma = (NumberFormatInfo)formatWithPeriod.Clone();
formatWithComma.NumberDecimalSeparator = ",";
if (!Decimal.TryParse(textBox.Text, NumberStyles.AllowDecimalPoint, formatWithComma, out decimalValue))
{
//error here
return;
}
}
con.Open();
SqlCommand cmd = new SqlCommand("Insert into inventory (price) values (@price);", con);
var priceParameter = cmd.Parameters.Add("@price", SqlDbType.Decimal);
priceParameter.Precision = 18;
priceParameter.Scale = 2;
priceParameter.Value = decimalValue;
cmd.ExecuteNonQuery();
con.Close();