从两个不同的表中搜索数据,即不同数据库中的两个表

时间:2015-09-24 07:34:25

标签: c# sql

我在不同的SQL Server数据库中有两个表。

  • 数据库1 table1 (custid,productid,customername)
  • Database2 table2 (productname,productid,pice,mfg)

我希望按特定 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;
}

在此我只获得客户的第一个产品详细信息,但它并未一次显示所有产品。

3 个答案:

答案 0 :(得分:1)

将其分为两种方法。首先,将根据条件从数据库1中获取客户ID。然后将这些客户ID传递给第二种方法并获取产品详细信息。您可以从第一种方法创建客户ID列表,并在第二种方法中构建SQL IN子句。参考 Building SQL “where in” statement from list of strings in one line?

答案 1 :(得分:1)

更改您的选择语句。使用INNER JOINproductid

加入两个表格
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; 

命令也在循环外执行...