C# C连接到SQL Server,使用多个组合框连接多个表中的数据

C# C连接到SQL Server,使用多个组合框连接多个表中的数据,c#,sql-server,C#,Sql Server,我有以下C代码,需要将信息从SQL Server数据库传递到组合框和列表框中。我可以让客户信息发挥作用,但一旦我以粗体添加产品信息,就会出现错误 我不知道如何编写select查询,以便相关表中的信息将传递到所需的cb和lb字段 private void frmSalesAdd_Load(object sender, EventArgs e) { string selectQuery; selectQuery = "SELECT * FROM Customers";

我有以下C代码,需要将信息从SQL Server数据库传递到组合框和列表框中。我可以让客户信息发挥作用,但一旦我以粗体添加产品信息,就会出现错误

我不知道如何编写select查询,以便相关表中的信息将传递到所需的cb和lb字段

private void frmSalesAdd_Load(object sender, EventArgs e)
{
     string selectQuery;

     selectQuery = "SELECT * FROM Customers";
     **selectQuery += "SELECT * FROM Products";**

     SqlConnection conn = ConnectionManager.DatabaseConnection();
     SqlDataReader rdr = null;

     try
     {
         conn.Open();

         SqlCommand cmd = new SqlCommand(selectQuery, conn);
         rdr = cmd.ExecuteReader();

         while (rdr.Read())
         {
             lbCustomerID.Items.Add(rdr["CustomerID"].ToString());
             cbCustomer.Items.Add(rdr["LastName" ].ToString());
             **lbProductID.Items.Add(rdr["ProductID"].ToString());
             cbProduct.Items.Add(rdr["Product"].ToString());**
         }

         rdr.Close();
    }
}
我得到的错误是:

未成功的System.Data.SqlClient.SqlException 0x80131904:靠近“*”的语法不正确

任何帮助都将不胜感激。

ExecuteReader将执行一个有效的SQL命令。您不能将多个命令添加到SqlCommand中,并在一次读取时执行它

这应该起作用:

private void frmSalesAdd_Load(object sender, EventArgs e)
{
    string selectQuery;

    selectCustomers = "SELECT * FROM Customers";
    selectProducts = "SELECT * FROM Products";

    SqlConnection conn = ConnectionManager.DatabaseConnection();

    conn.Open();

    SqlCommand cmd = new SqlCommand(selectCustomers, conn);

    using(SqlDataReader rdr = cmd.ExecuteReader()) 
    {
        while (rdr.Read())
        {
            lbCustomerID.Items.Add(rdr["CustomerID"].ToString());
            cbCustomer.Items.Add(rdr["LastName" ].ToString());
        }
    }

    cmd = new SqlCommand(selectProducts, conn);

    using(SqlDataReader rdr = cmd.ExecuteReader()) 
    {
        while (rdr.Read())
        {
            lbProductID.Items.Add(rdr["ProductID"].ToString());
            cbProduct.Items.Add(rdr["Product"].ToString());
        }
    }
}

如果确实希望从查询返回多个结果集,还需要使用数据库读取器读取它们

请尝试以下代码:

private void frmSalesAdd_Load(object sender, EventArgs e)
{
     // make sure to have a VALID SQL statement here!
     string selectQuery = "SELECT * FROM Customers; SELECT * FROM Products";

     SqlConnection conn = ConnectionManager.DatabaseConnection();

     try
     {
         conn.Open();

         SqlCommand cmd = new SqlCommand(selectQuery, conn);
         SqlDataReader rdr = cmd.ExecuteReader();

         // read the first result set - the return values from "SELECT * FROM Customers"
         while (rdr.Read())
         {
             lbCustomerID.Items.Add(rdr["CustomerID"].ToString());
             cbCustomer.Items.Add(rdr["LastName" ].ToString());
         }

         // when you're done reading the first result set - 
         // try to move ahead to the next result set
         if (rdr.NextResult())
         {
             // read the second result set - the return values from "SELECT * FROM Products"
             while (rdr.Read())
             {
                 lbProductID.Items.Add(rdr["ProductID"].ToString());
                 cbProduct.Items.Add(rdr["Product"].ToString());
             }
         }

         rdr.Close();
    }
}

SELECT*FROM CustomersSELECT*FROM Products对您来说像vallid SQL吗?这不完全是真的-您可以有一个返回多个结果集的查询-您只需要正确地读回它-请参阅我的answer@JulieM:如果这个答案帮助你解决了问题,那么请。这将表达你对那些花自己的时间帮助你的人的感激之情。