我有两个数据库和表。我需要在Gridview的一个数据源上连接两个表。 (我不能使用DBLINK)
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)
{
}
像这样:
有时db1或db2会出错。如果得到其中一个错误,我需要查看其他数据库值:
或
我该怎么做?你能告诉我一些关于我的示例代码的例子吗?谢谢。
-
我尝试了这样的dataset.merge:
dt1.Merge(dt2, true, MissingSchemaAction.Add);
GridView1.DataSource = dt1;
GridView1.DataBind();
但是得到这样的输出:
我该如何解决?
答案 0 :(得分: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
};
我首先创建一个已收到的所有名称的列表,然后将每个数据源连接到该名称列表。
答案 1 :(得分:0)
您可以按照以下方式执行此操作:
检索第一个查询结果,该结果在dataset1
检索第一个查询结果,该结果是数据集2中的某个数据库
使用DataSet.Merge方法合并dattsMaster中的两个数据集
将datasetMaster绑定到网格
更新:
最简单的解决方法是在DB1
和DB2
之间有一个链接数据库服务器的SP,然后您可以从DB1 in DB2
引用该表。
所以它会有一些代码:
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