SQL语法错误(在Windows形式下,c#)

本文关键字:Windows 语法 错误 SQL | 更新日期: 2023-09-27 18:05:42

我想插入一些数据到我的表中这就是我想要做的

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)

谢谢

SQL语法错误(在Windows形式下,c#)

您将内部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) + ")";

如p.s.w.g所述:这是对SQL注入开放的。用参数化的版本替换它!

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

应该可以

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

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

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