当我从C#发送十进制值时,例如:5.54 当我执行查询时,我可以看到我的变量表示为5,54
任何人都知道如何获得DOT而不是COMMA?
这是我的代码:
using (MySqlConnection conn = new MySqlConnection(conn_string.ToString()))
using (MySqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = string.Format("INSERT Test (lat, long) VALUES ({0},{1})",
OSGconv.deciLat, OSGconv.deciLon);
conn.Open();
cmd.ExecuteNonQuery();
}
答案 0 :(得分:4)
任何人都知道如何获得DOT而不是COMMA?
不要直接将值嵌入到SQL中。请改用参数化SQL。有关示例,请参阅MySqlCommand.Parameters
的文档。您总是使用参数化查询:
这里有一个更普遍的观点:不要再执行任何转换了。每次将数据从一种形式转换为另一种形式时,您都可能会丢失数据或更糟。如果您能够尽可能长时间地将数据保存在最合适的表示中,则可以最大限度地减少问题。
答案 1 :(得分:0)
我完全赞同其他建议。至于有关逗号或点的其他问题,它取决于CurrentCulture。要获得正确的格式,您必须使用ToString providing Culture.InvariantCulture as the second parameter。这将使用小数点分隔符。
但是,我坚持认为,另一个答案是非常好的建议:使用DbParameters。我添加:传递C#中保存的值,而不是将其转换为字符串。它将由ADO.NET提供程序正确处理。即如果您必须传递float
变量,请将其传递而不转换为string
,但原样是float
值。