C# 检索不同的行并声明标量变量

C# 检索不同的行并声明标量变量,c#,sql-server,C#,Sql Server,我正试图从数据库中从特定的deliverySerial检索一个不同的行 但是,我遇到一个错误,提示我声明标量变量=@deliverySerial 我尝试了许多其他方法,但问题仍然存在 这里是连接: public class DlDbConn { public DlDbConn() { } public SqlConnection GetConnection() { SqlConnection dbConn; dbConn = new SqlConnection(@"Data

我正试图从数据库中从特定的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;

}

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

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

使用:


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

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

使用:


我认为你的询问是错误的。以下是-您不能查询ViewDelivery,因为它在您的子查询之外

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

sql.AppendLine("AND deliverySerial = @deliverySerial");
我认为你不需要这个,但我可能弄错了


祝你好运

我认为你的询问不正确。以下是-您不能查询ViewDelivery,因为它在您的子查询之外

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

sql.AppendLine("AND deliverySerial = @deliverySerial");
我认为你不需要这个,但我可能弄错了


祝你好运

嗨,我得修改一下。我已经为参数提供了da.SelectCommand.Parameters。AddWithValue@deliverySerial,送货系列;我觉得您的查询不正确-请从子查询a中选择*,其中ViewDelivery.deliverySerial=?你在哪里加入ViewDelivery?我在这里加入-内部加入ViewDelivery ON PO.poNum=ViewDelivery.poNum我缺少什么?子查询连接该表,但不连接外部查询。看看这个:嗨,我已经做了修改。我已经为参数提供了da.SelectCommand.Parameters。AddWithValue@deliverySerial,送货系列;我觉得您的查询不正确-请从子查询a中选择*,其中ViewDelivery.deliverySerial=?你在哪里加入ViewDelivery?我在这里加入-内部加入ViewDelivery ON PO.poNum=ViewDelivery.poNum我缺少什么?子查询连接该表,但不连接外部查询。看看这个:谢谢回复。但是你的意思是什么?。我应该把这个放在哪里?当然在你的问题中。bla-bla-bla和ViewDelivery.deliverySerial=?。但是现在有另一个错误指出“?”附近的语法不正确。好的,我找不到提供到MySQL服务器连接的类SqlConnection。您能告诉我您使用的是什么SqlConnection类吗?如果它来自namespase System.Data.SqlClient,则无法为您提供到MySQL服务器的连接。请使用合适的数据访问提供程序。首先,您必须了解MySQL和SQL Server之间的区别。谢谢回复。但是你的意思是什么?。我应该把这个放在哪里?当然在你的问题中。bla-bla-bla和ViewDelivery.deliverySerial=?。但是现在有另一个错误指出“?”附近的语法不正确。好的,我找不到提供到MySQL服务器连接的类SqlConnection。您能告诉我您使用的是什么SqlConnection类吗?如果它来自namespase System.Data.SqlClient,则无法为您提供到MySQL服务器的连接。使用适当的数据访问提供程序。首先,您必须了解MySQL和SQL Server之间的区别。OP使用MySQL。代码中有更多错误。请参阅下面的注释my answer.OP使用MySQL。代码中有更多错误。见我的回答下面的评论。