我一直在试图插入一个特定的数据到我的数据库(在我的情况下,它是为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