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

Omu*_*Omu 3 .net c# sql sql-server

我有这样的事情:

foo { a = 1, b = 2, c = 98,3 }
Run Code Online (Sandbox Code Playgroud)

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

insert foos(a,b,c) (1, 2, 98,3)
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 6

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

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

基本上,将"值"(在参数中)和"SQL代码"的概念分开,它们保留在文本中.

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