我在不同的SQL Server数据库中有两个表。
我希望按特定 custid 显示所有购买的产品。
我的代码:
using System.Data.SqlClient;
string queryString = "Select custID from Table1 where custId ="+ textbox1.text;
string TempCustID;
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
TempCustID = reader[0].ToString();
String stringprovider = "@database connection string ";
Sqlconnection con2 = new sqlconnection(stringprovider);
Con2.open();
Cmd2.connection=con2;
Cmd2.commandType = new commandType.text;
Cmd2.commandText = "select * from Table2 where Productid = @productid";
Cmd2.parameters.addwithvalue("@productid",TempCustID);
}
}
reader.Close();
Dataset Ds = new dataset();
Oledbdataadaptaer da1 = new oledbdataadapter(cmd2);
Datatable Table2 = new Data table();
Da1.fill(table2);
Datagridview2.source = table2;
}
在此我只获得客户的第一个产品详细信息,但它并未一次显示所有产品。
答案 0 :(得分:1)
将其分为两种方法。首先,将根据条件从数据库1中获取客户ID。然后将这些客户ID传递给第二种方法并获取产品详细信息。您可以从第一种方法创建客户ID列表,并在第二种方法中构建SQL IN子句。参考 Building SQL “where in” statement from list of strings in one line?
答案 1 :(得分:1)
更改您的选择语句。使用INNER JOIN
和productid
SELECT *
FROM Table2
INNER JOIN Table1 ON TABLE2.productid = Table1.productid
WHERE Table2.productid = @productid
这将显示两个表中的所有记录,如果要选择特定表,只需删除(*)并替换为所需的列名。
SELECT
Table1.customername, Table2.productname, Table2.productid,
Table2.pice, Table2.mfg
FROM
Table2
INNER JOIN
Table1 ON TABLE2.productid = Table1.productid
WHERE
Table2.productid = @productid
希望我上面的示例代码可以帮助您。 :)
答案 2 :(得分:0)
您正在从Table1中选择custID ...而不是根据customerID选择表1中的productid
将您的第一个查询修改为:
string queryString = "Select productid from Table1 where custId ="+ textbox1.text;
命令也在循环外执行...