TextBox用逗号转换成SQL

时间:2018-07-07 20:08:39

标签: c# sql-server sql-server-2008

我正在尝试将具有十进制值的文本框插入sql。 如果文本框包含点,则可以正常工作,但是如果有人使用逗号而不是点怎么办?我该如何捕捉这两种情况?

示例我要插入值1,9

var map = L.map('map', {
  renderer: L.canvas()
});

我正在将数据类型varchar转换为float时出错。 我需要用户将其放入文本框,点或逗号中的任何内容,以将其作为浮点值转换为sql

1 个答案:

答案 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();