C# C连接到SQL Server,使用多个组合框连接多个表中的数据
我有以下C代码,需要将信息从SQL Server数据库传递到组合框和列表框中。我可以让客户信息发挥作用,但一旦我以粗体添加产品信息,就会出现错误 我不知道如何编写select查询,以便相关表中的信息将传递到所需的cb和lb字段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";
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:如果这个答案帮助你解决了问题,那么请。这将表达你对那些花自己的时间帮助你的人的感激之情。