我有这样的事情:插入一个浮点值与在逗号(,)是用于“浮点”培养
foo { a = 1, b = 2, c = 98,3 }
我动态地生成所述插入查询,以便与此结束:
insert foos(a,b,c) (1, 2, 98,3)
有人知道如何解决这个问题吗?
我有这样的事情:插入一个浮点值与在逗号(,)是用于“浮点”培养
foo { a = 1, b = 2, c = 98,3 }
我动态地生成所述插入查询,以便与此结束:
insert foos(a,b,c) (1, 2, 98,3)
有人知道如何解决这个问题吗?
简单的答案:不要使用文本插入值的第一个地方。使用参数化的SQL查询。
这不仅限于数字 - 它也是日期和时间特别重要。从概念上讲,你不是在处理一个“有逗号的号码” - 你正在处理一个号码。 SQL恰好是我们在数据库和客户端之间传输数据的方式,但参数化的SQL允许我们保留值为的值,而不会出现毫无意义且容易出错的转换为中间的文本。最后,参数化查询对于传输文本值时防范SQL注入攻击非常重要。
基本上,分离出“值”(进入参数)和“SQL代码”的概念,它保留在文本中。
只是重新格式化包含值的现有SQL,直到它正常工作为止是一个脆弱的解决方案。
乔恩的回答比第一眼看到的omu有更多的价值。 – Tobiasopdenbrouw 2010-07-21 07:05:00
你的意思是这样的:command.Parameters.AddWithValue(“@ c”,foo.c)? – Omu 2010-07-21 07:05:58
@Omu:很可能,当然已经适当调整了SQL语句。 – 2010-07-21 07:06:25
你能不能把价值转化为带'。'的东西?
编辑:使用参数化查询会更好。一个简单的'替换'也会有帮助。
值是十进制的第一个地方,在我把她放到字符串后,你的意思是这样做d.ToString()。Replace(“,”,“。”)? – Omu 2010-07-21 07:02:49
当然,就是这样的。 – Tobiasopdenbrouw 2010-07-21 07:03:25
生成SQL字符串时,始终使用.ToString(CultureInfo.InvariantCulture)
以确保TSQL的小数格式正确。
或者,优先使用参数化查询,如Jon Skeet上面所述。
谢谢你告诉我,我不知道这种使用tostring – Omu 2010-07-21 11:52:04
奇怪:打开'{'和关闭'''''。在结果声明中也有太多',':-)。你能澄清吗? – 2010-07-21 07:00:19
对不起,修正了这个问题 – Omu 2010-07-21 07:01:16
直接提问:是你输入的JSON? – 2010-07-21 07:02:39