我的插入请求中有一个double值。我在这个double值中将逗号更改为一个点,当我在MySQL规则中创建MySqlCommand时,它有12.5而不是12.5。但我的字符串将我的点更改为逗号并使用逗号发送插入请求并触发异常。为什么MySqlCommand创建一个12,5而不是12.5的字符串?
string valueCapteur = "12,5";
valueCapteur = valueCapteur.Replace(',', '.');
double.TryParse(valueCapteur, NumberStyles.Any, CultureInfo.InvariantCulture, out double value);
MySqlCommand cmd = new MySqlCommand
{
Connection = cnn,
CommandText = "INSERT INTO `notification`(`Value`) VALUES (" + value + ");"
};
cmd.ExecuteNonQuery();
当我调试value = 12.5但在我的cmd.CommandText值= 12,5
时答案 0 :(得分:3)
你想要的是参数:
using(MySqlCommand cmd = new MySqlCommand {
Connection = cnn,
CommandText = "INSERT INTO `notification`(`Value`) VALUES (@value);"
})
{
cmd.Parameters.AddWithValue("@value", value);
cmd.ExecuteNonQuery();
}
或使用像“Dapper”这样的工具:
conn.Execute("INSERT INTO `notification`(`Value`) VALUES (@value);", new { value });
除了避免SQL注入之外,参数的一个关键点是它避免了文化和格式问题。