1

我正在尝试从特定的“deliverySerial”中从我的数据库中检索不同的行。

但是我遇到了一个错误,提示我“声明标量变量 =“@deliverySerial”。

我尝试了许多其他方法,但问题仍然存在。

这是连接:

public class DlDbConn
{
public DlDbConn()
{

}

public SqlConnection GetConnection()
{
    SqlConnection dbConn;

    dbConn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\test.mdf;Integrated Security=True;User Instance=True");

    return dbConn;
   }
  }   

数据层中的方法:

    private String errMsg;
    private DlDbConn dbConn;

public testing()
{

    dbConn = new DlDbConn();
}


public DataSet Details(String supplierLogo, String supplierName, String supplierAddr, int poNum, String dateSent, int deliverySerial, String deliveryDate,
                          int quantity, String catSerial, String catName)
{
    SqlConnection conn;
    StringBuilder sql;
    SqlDataAdapter da;
    DataSet detail;



    conn = dbConn.GetConnection();
    detail = new DataSet();
    sql = new StringBuilder();

    sql.AppendLine("SELECT * FROM (select PO.poNum, PO.dateSent, ViewDelivery.deliverySerial, Supplier.supplierName, Supplier.supplierAddr, Supplier.supplierLogo, ViewDelivery.deliveryDate,  Catalog.catSerial, Catalog.catName, PO.quantity, ROW_NUMBER() OVER (PARTITION BY Catalog.catSerial ORDER BY Catalog.catSerial) AS num FROM PO INNER JOIN Supplier ON PO.supplierID = Supplier.supplierID INNER JOIN ViewDelivery ON PO.poNum = ViewDelivery.poNum INNER JOIN Catalog ON PO.catSerial = Catalog.catSerial)AS a WHERE a.num = 1 ");
    sql.AppendLine("AND ViewDelivery.deliverySerial = @deliverySerial");
    try
    {
        conn.Open();
        da = new SqlDataAdapter(sql.ToString(), conn);
        da.SelectCommand.Parameters.AddWithValue("@deliverySerial", deliverySerial);
        da.Fill(detail);
    }
    catch (Exception ex)
    {
        errMsg = ex.Message;
    }
    finally
    {
        conn.Close();
    }

    return detail;

}
4

2 回答 2

1

您必须使用 MySQL 的参数表示法,?而不是@deliverySerial在您的查询中。

此外,ViewDelivery查询的外部部分无法访问表。

利用:

AND a.deliverySerial = ?
于 2013-01-30T14:45:46.157 回答
0

我认为您的查询不正确。这是小提琴——你不能在 ViewDelivery 上查询,因为它在你的子查询之外。

尝试从您的 WHERE 条件中删除它,因为该字段在您的子查询中返回:

sql.AppendLine("AND deliverySerial = @deliverySerial");

我认为您不需要“?”,但我可能弄错了。

祝你好运。

于 2013-01-30T15:02:17.970 回答