合并两个数据集并在一个gridview中显示

时间:2013-01-15 06:48:09

标签: c# sql-server-2008 ms-access gridview

我有两个单独的数据库,我想从中检索数据并在一个网格视图中显示。我很困难的是,我只在一个数据库的表中有一个产品密钥,而另一个数据库中的实际产品产品再次使用同一组产品密钥,现在我想在一个网格视图中显示产品数据。 ..如果这是有道理的。

如何执行此操作,合并数据并在一个网格中重新显示产品数据。

string connString = "Data Source=.\\SQLEXPRESS;Initial Catalog=LRVWebsite;user ID=sa;password=lrmg;";
SqlConnection sqlCon;
OleDbConnection conn;

DataSet setOleDb;
DataSet dsSql;
private void bindData()
{
    try
    {
        conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;
                                Data Source =" + Server.MapPath("App_Data\\LR Product Database 2000.mdb"));
        conn.Open();

        setOleDb = new DataSet();
        OleDbDataAdapter dbaOle = new OleDbDataAdapter("SELECT * FROM tblProducts", conn);

        dbaOle.Fill(setOleDb);
        sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["LRVWebsite"].ToString());
        sqlCon.Open();
        dsSql = new DataSet();

        SqlDataAdapter dba = new SqlDataAdapter(@"SELECT C.CustomerFirstName,C.CustomerLastName, C.CustomerCompany,C.CustomerPosition,C.CustomerCountry,C.CustomerProvince,C.CustomerContact,CP.ActionDate,CP.ProductCode,CP.CustomerEmail FROM tblCustomers C INNER JOIN tblCustomerProducts CP ON C.CustomerEmail = CP.CustomerEmail ORDER BY ActionDate DESC", connString);
        //@"SELECT C.CustomerFirstName,C.CustomerLastName,C.CustomerCompany,C.CustomerPosition,C.CustomerCountry,C.CustomerProvince,C.CustomerContact,CP.ActionDate,CP.ProductCode,CP.CustomerEmail FROM tblCustomers C INNER JOIN tblCustomerProducts CP ON C.CustomerEmail = CP.CustomerEmail ORDER BY ActionDate DESC", connString);
        dba.Fill(dsSql);

        dsSql.Merge(setOleDb);

        GridView1.DataSource = dsSql;
        GridView1.DataBind();


        sqlCon.Close();

这就是我的尝试。现在,如何让产品密钥与包含相同产品密钥的其他表中的实际产品相关联?

2 个答案:

答案 0 :(得分:0)

我认为这是一个常见的情况。这是msdn。

的详细链接

Merge Data Set Contents

答案 1 :(得分:0)

据我所知,您在一个数据库中有两个表,另一个数据库中有一个表,您希望将所有这些数据集合并并将其显示为一个。

如果我是正确的,那么你可以在数据库中进行连接;

select * from dbo.firstdatabasetable db1
inner join apple.primarykeys db2
on db2.primary = db1.primary
inner join orange.seconddatabase db3
on db2.productname = db3.productname

如果数据库通过网络托管在不同的计算机上,那么您可以找到select sys.servers

的数据库服务器

假设第一台服务器是x,第二台服务器是y

然后;

select * from x.dbo.firstdatabasetable db1
inner join x.dbo.primarykeys db2
on db2.primary = db1.primary
inner join y.dbo.seconddatabase db3
on db2.productname = db3.productname
inner join x.dbo.primarykeys