C# ';组附近的语法不正确,当语法不正确时,这意味着什么?
我正在创建一个表格,我可以添加一个菜单项,以显示所有供应商和供应商数量的零件号。所以我跑的时候让ReportSupplierDisplayALl工作。但是,当我尝试运行报表SuppliersDisplayByPartNumber的表单时,因为当我输入SupplierID时,它抛出了一个异常。 当它抛出异常时,不正确的语法是什么意思C# ';组附近的语法不正确,当语法不正确时,这意味着什么?,c#,sql,C#,Sql,我正在创建一个表格,我可以添加一个菜单项,以显示所有供应商和供应商数量的零件号。所以我跑的时候让ReportSupplierDisplayALl工作。但是,当我尝试运行报表SuppliersDisplayByPartNumber的表单时,因为当我输入SupplierID时,它抛出了一个异常。 当它抛出异常时,不正确的语法是什么意思 public DataTable DisplaySupplierByPartNumber(string PartNumber) { /
public DataTable DisplaySupplierByPartNumber(string PartNumber)
{
// Add using System.Data
string queryString = "SELECT Suppliers.SupplierName, Suppliers.Email, Parts.PartName, SUM(Inventory.Quantity) AS SumOfQuantity, PartNumber " +
"FROM ((Suppliers INNER JOIN Parts ON Suppliers.SupplierID = Parts.Supplier) INNER JOIN Inventory ON Parts.PartNumber = Inventory.PartNumber " +
"INNER JOIN Employees ON Inventory.EmpID = Employees.EmpID " +
"GROUP BY Suppliers.SupplierName, Suppliers.Email, Parts.PartName, Parts.PartNumber " +
"HAVING Parts.PartNumber = @PartNumber " +
"ORDER BY Suppliers.SupplierName ";
using (SqlConnection con = new SqlConnection(_strCon))
{
try
{
SqlCommand command = new SqlCommand(queryString, con);
command.Parameters.AddWithValue("@PartNumber", PartNumber );
con.Open();
SqlDataReader reader = command.ExecuteReader();
DataTable theTable = new DataTable();
theTable.Load(reader);
return theTable;
}
catch (Exception ex)
{
throw ex;
}
}
不要使用“”作为字符串使用@查询,并确保所有括号都正确无误
也可以先更改元件的零件号,然后使用AGGRATE函数
string queryString = @"SELECT S.SupplierName, S.Email, P.PartName, SUM(Inventory. Quantity) AS SumOfQuantity FROM Suppliers as s
INNER JOIN Parts as p on P.SupplierId=P.SupplierId
INNER JOIN Inventory ON Parts.PartNumber = Inventory.PartNumber
INNER JOIN Employees ON Inventory.EmpID = Employees.EmpID
GROUP BY S.SupplierName, S.Email, P.PartName, P.PartNumber
HAVING Parts.PartNumber = @PartNumber
ORDER BY S.SupplierName"
这个问题与C无关。语法错误在SQL语句中。建议:假设您使用的是MSSQL,请将该语句复制/粘贴到SQL对象资源管理器(MSVS)或SSMS中,并对其进行优化,直到“正确”为止。首先删除语句中的(假的!)括号。在FROM之后有两个开始括号,但在groupby之前只有一个结束括号。调试是程序员工作的一部分。在执行变量
queryString
之前,是否已尝试打印该变量的内容?OP的原始SQL有几个问题。不清楚他到底想做什么。。。但是你建议的询问看起来不错!