2016-06-24 3 views
1

私は2つのデータベースとテーブルを持っています。 Gridviewのために1つのデータソースで2つのテーブルを結合する必要があります。Gridview上で2つの異なるデータソースをマージ/ジョインする方法はありますか?

enter image description here

そして、時にはDB1またはDB2取得エラー:このように

try 
{ 
OleDbConnection Connection1; 
    using (Connection1 = new OleDbConnection("Provider=MSDAORA.1;Data Source=DATABASE1:1521/orcl;Persist Security Info=True;Password=PASSWORD;User ID=USERNAME;")) 
    { 
     string sqlQuery = "select * from DB1_TABLE"; 

     using (OleDbDataAdapter cmd = new OleDbDataAdapter(sqlQuery, Connection1)) 
     { 
       Connection1.Open(); 
       DataTable dt = new DataTable(); 
       cmd.Fill(dt); 
       GridView1.DataSource = dt; 
       GridView1.DataBind(); 
       Connection1.Close(); 
     } 
    } 
} 
catch (Exception) 
{ 
} 


try 
{ 
OleDbConnection Connection2; 
    using (Connection2 = new OleDbConnection("Provider=MSDAORA.1;Data Source=DATABASE2:1521/orcl;Persist Security Info=True;Password=PASSWORD;User ID=USERNAME;")) 
    { 
     string sqlQuery = "select * from DB2_TABLE"; 

     using (OleDbDataAdapter cmd = new OleDbDataAdapter(sqlQuery, Connection2)) 
     { 
       Connection2.Open(); 
       DataTable dt = new DataTable(); 
       cmd.Fill(dt); 
       GridView1.DataSource = dt; 
       GridView1.DataBind(); 
       Connection2.Close(); 
     } 
    } 
} 
catch (Exception) 
{ 
} 

を(私はDBLINKを使用することはできません)。

enter image description here

または

enter image description here

私はこれをどのように操作を行うことができます。このようなエラーにそれらの1つを得る場合、私は他のデシベル値を確認する必要がありますか?私のサンプルコードでいくつかの例を教えてください。ありがとうございました。

-

私はこのようなdataset.mergeを試してみました:

dt1.Merge(dt2, true, MissingSchemaAction.Add); 
    GridView1.DataSource = dt1; 
    GridView1.DataBind(); 

をしかし、このような出力を得る:

enter image description here

私はそれをどのように修正することができますか?これらの線に沿って

答えて

0

何か:

 var data1 = new List<Data1> 
     { 
      new Data1 { Name = "A", Date1 = DateTime.Now }, 
      new Data1 { Name = "B", Date1 = DateTime.Now } 
     }; 

     var data2 = new List<Data2> 
     { 
      new Data2 { Name = "C", Date3 = DateTime.Now }, 
      new Data2 { Name = "D", Date3 = DateTime.Now }, 
     }; 


     var query = from key in data1.Select(item => item.Name) 
         .Union(data2.Select(item => item.Name)) 

     join datum1 in data1 on key equals datum1.Name into kd1 
     from sub1 in kd1.DefaultIfEmpty() 

     join datum2 in data2 on key equals datum2.Name into kd2 
     from sub2 in kd2.DefaultIfEmpty() 

     select new 
     { 
      Name = key, 
      Date1 = sub1?.Date1, 
      Date2 = sub1?.Date2, 
      Date3 = sub2?.Date3, 
      Date4 = sub2?.Date4 
     }; 

私が最初にあなたが受け取った後、その名のリストに、各データソースに参加残っているすべての名前のリストを作成しています。

0

あなたは次のようにそれを行うことができます。

  • をDATASET2

  • で特定のDBを形成された最初のクエリ結果を取得DATASET1

  • で特定のDBを形成された最初のクエリ結果を取得

  • DataSet.Mergeメソッドを使用して、データセットマスターの2つのデータセットをマージする方法

  • バインドdグリッドにatasetMaster

更新:

また、この周りの最も簡単な方法は、あなたがDB1DB2間のリンクのデータベースサーバを持っていて、その後、DB1 in DB2からそのテーブルを参照することができますSPだろう。

だから、のようないくつかのコードを持っています:

SELECT d.ColA, d.ColB, d.ColC 
FROM dbo.MyTable d 
UNION ALL 
SELECT b.ColA, b.ColB,b.ColC 
FROM DB1.dbo.MyOtherTable b 

詳細Linked Servers

+0

あなたは私のサンプルに例を私にしてください示していただけますか?ありがとうございました。 – phe

+0

@Ricardo私は次のステップを提供しました。最初に質問を投稿してください。また、私の答えで更新できるもう一つの方法を見てください。 –

+0

ありがとうございます。私はdataset.mergeを試しましたが、間違った出力を得ました。私の質問を編集しました。 – phe

関連する問題