繁体   English   中英

SQL语法错误(Windows窗体,C#)

[英]Error with SQL syntax (in Windows form , C#)

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

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)

谢谢

您将内部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注入开放。 用参数化版本替换它!

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

这应该工作

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

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

但是您不应创建此类sql查询,而应使用Parameters以避免SQL注入攻击。 您的代码容易受到它们的攻击。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM