我的插入请求中有一个双精度值。我像在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();当我调试值= 12.5但在我的cmd.CommandText值= 12,5中时
1 回答
扬帆大鱼
TA贡献1799条经验 获得超9个赞
您想要的是参数:
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注入外,参数的关键点之一是它避免了区域性和格式问题。
- 1 回答
- 0 关注
- 182 浏览
添加回答
举报
0/150
提交
取消