0

データを取得して 1 つのグリッド ビューに表示する 2 つの別個のデータベースがあります。難しいのは、あるデータベースのテーブルにのみプロダクト キーがあり、他のデータベースの実際の製品と同じプロダクト キーのセットがあり、製品データを 1 つのグリッド ビューに表示したいということです。 ..これが理にかなっている場合。

これを行うにはどうすればよいですか。データをマージして、製品データを 1 つのグリッド内のキーに対して再度表示します。

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();

これは私が試したことです。では、同じプロダクト キーを含む他のテーブルの実際の製品とプロダクト キーを関連付ける方法を教えてください。

4

2 に答える 2

0

これはよくあるシナリオだと思います。msdn からの詳細なリンクを次に示します。

データセットの内容をマージ

于 2013-01-15T07:19:25.873 に答える
0

私が理解している限り、1 つのデータベースに 2 つのテーブルがあり、もう 1 つのデータベースに 1 つのテーブルがあり、これらすべてのデータ セットを結合して 1 つに表示したいと考えています。

私が正しければ、データベース間で結合を行うことができます。

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

データベースがネットワーク全体の異なるマシンでホストされている場合、DB サーバーを見つけることができますselect sys.servers

最初のサーバーが x で、2 番目のサーバーが 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
于 2013-01-16T03:06:45.190 に答える