我一直在試圖插入一個特定的數據到我的數據庫(在我的情況下,它是爲Microsoft Access), 這是下面的代碼我使用C#中寫道:INSERT INTO statment錯誤
string sql = "Insert into Orders(User,PID,PName,Price,Amount)" +
" values('" + od.User + "','" + od.Pid + "','" +
od.Pname + "','" + od.Price + "','" + od.Amount + "')";
現在我假設我寫的形式非常好,不是嗎? 我得到的錯誤是:
INSERT INTO語句中的語法錯誤。
string sql = "Insert into Orders([User],PID,PName,Price,Amount) values(@user, @pid, @pname, @price, @amount)"; ..here you will need to add your parameters to your command
這既避免了SQL注入攻擊,防止錯誤使用轉義字符:所以你使用參數化命令
是否有可能你的任何值有單引號在他們? – 2013-02-13 18:07:32
'od'的來源是什麼?數據庫表中的所有這些列字符串?在第一個問題上,如果它是一個用戶,你可能有Sql注入漏洞。正如@Mike所認爲的那樣,以任何方式查看參數化查詢,因爲這樣也可以處理輸入中的嵌入式單引號。第二,如果其中一些列是數字的,那麼您將會遇到數據類型問題。 – 2013-02-13 18:07:39
爲什麼不在創建插入查詢時使用@Parameters,然後使用'command.Parameters.AddWithValues(@paramname,paramvalue);' – MethodMan 2013-02-13 18:07:41