我有這樣的事情:插入一個浮點值與在逗號(,)是用於「浮點」培養
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