【发布时间】:2013-04-02 02:31:32
【问题描述】:
嘿,我正在尝试运行此查询:
command.UseSqlCommand("INSERT INTO DisplayOrders Values ('" + OrderId.Text + "','" + "(SELECT ProductId FROM Products WHERE ProductName =N'" + listBox1.Text + "')','" + listBox1.Text + "','" + OrderQuantity.Text + "','" + TotalCost.Text + "')");
现在command.UseSqlCommand 正在运行查询,但我不断收到此错误:
“intel”附近的语法不正确
(intel 是“ProductName”(我从这里得到的:
SELECT ProductId FROM Products WHERE ProductName =N'" + listBox1.Text + "'
编辑:这是命令的值,(在'intel'附近得到'不正确的语法')
INSERT INTO DisplayOrders
Values ('2', '(SELECT ProductId FROM Products WHERE ProductName =N'Intel Quad Core i5 3470 3.2Ghz 6MB Tray')','Intel Quad Core i5 3470 3.2Ghz 6MB Tray','1','900')"
【问题讨论】:
-
1) 这对 SQL 注入开放 2) 将其拆分为
string,取其值,自己在数据库上运行,查看结果。 -
不要这样做。请。使用参数化 SQL 来避免SQL injection attacks。这也可以很好地解决您当前的问题,但它肯定会提高您应用的安全性。
-
WHERE ProductName =N'" + listBox1.Text + "')` 中的 N 是什么意思?可能将单引号向左移动一个空格,以便它也包含 N。
-
N 用于 SQL Server 上的 Unicode Mr @Ash :)
-
嘿,谢谢你的关心,但这是一个学校项目,没有人测试我的 SQLI。
标签: c# sql-server winforms