插入带有文化的浮点值,其中逗号(,)用于“浮点”

时间:2010-07-21 06:58:39

标签: c# .net sql sql-server

我有这样的事情:

foo { a = 1, b = 2, c = 98,3 }

我动态生成插入查询,最后得到:

insert foos(a,b,c) (1, 2, 98,3)

有谁知道如何解决这个问题?

3 个答案:

答案 0 :(得分:6)

简单回答:首先不要使用文本来插入值。使用参数化SQL查询。

这不仅限于数字 - 它对日期和时间也特别重要。从概念上讲,你不是在处理“带逗号的数字” - 你正在处理一个数字。 SQL恰好是我们在数据库和客户端之间传输数据的方式,但参数化SQL允许我们将值保持为值,而不会在其间进行无意义且容易出错的文本转换。最后,参数化查询在传输文本值时非常重要,可以防止SQL注入攻击。

基本上,将“值”(进入参数)和“SQL代码”的概念分开,保留在文本中。

只需重新格式化包含值的现有SQL,直到它发生工作为止,这是一个脆弱的解决方案。

答案 1 :(得分:1)

生成SQL字符串时,始终使用.ToString(CultureInfo.InvariantCulture)来确保为TSQL正确格式化小数。

或者,首选,使用参数化查询,如上面Jon Skeet所述。

答案 2 :(得分:0)

你能不能只用'。'来表达价值?

编辑:使用参数化查询会更好。而简单的“替换”也会有所帮助。