-1

我正在尝试将一些数据插入我的表中,这就是我尝试这样做的方式

INSERT INTO OrdersDetail 
Values (" + OrderId.Text + ", (SELECT IdProduct FROM Products WHERE ProductName = '" + listBox1.Text + "'), '" + TypeOfProductComboBox.Text + "', '" + OrderQuantity.TextAlign + "', '" + TotalCost.Text + "'");

我收到错误我认为我的语法错误,我在查询中使用查询来获取产品 ID。

列是:

OrderId (int)
ProductId(int)
ProductName(Nvarchar)
OrderQuantity(Nvarchar)
TotalCost(NvarChar)

谢谢

4

3 回答 3

2

你把你的内心SELECT置于'. 应该:

var query = "INSERT INTO OrdersDetail Values (" + OrderId.Text + ", (SELECT IdProduct FROM Products WHERE ProductName = '"+ listBox1.Text + "'), '" + TypeOfProductComboBox.Text + "', '" + OrderQuantity.TextAlign + "', '" + TotalCost.Text + "')");

例如,如果TotalCost.Text是 SQL 中的数字数据类型,请使用

"..." + OrderQuantity.TextAlign + "', " + Convert.ToDouble(TotalCost.Text) + ")";

正如 pswg 所说:这是对 SQL 注入开放的。将其替换为参数化版本!

于 2013-03-24T23:16:48.137 回答
0

我认为问题出在第一行和您的内部Select

这应该工作

INSERT INTO OrdersDetail 
Values ('" + OrderId.Text + "',(SELECT IdProduct FROM Products WHERE ProductName ='"+ listBox1.Text + "')," + TypeOfProductComboBox.Text + "','" + OrderQuantity.TextAlign + "','" + TotalCost.Text + "'");
于 2013-03-24T23:19:53.813 回答
0

问题是您缺少最后一个括号,查询应该以"')"而不是结束"'"。初始代码以左括号开头,这就是您没有收到编译错误的原因。

但是你不应该创建这样的sql查询,使用Parameters来避免SQL注入攻击。你的代码容易受到他们的攻击。

于 2013-03-24T23:28:18.373 回答