连接来自不同数据库的表(ADO.NET)

时间:2018-09-27 19:00:26

标签: c# .net ado.net oledbconnection oledbcommand

我有两个数据库,每个数据库都有一个UDL连接字符串。我想构造一个查询,将两个数据库中的表连接起来。

我正在从这样的单个数据库中进行查询。

string query = "...";

using (OleDbConnection connection = new OleDbConnection(ConnectionString))
using (OleDbCommand command = new OleDbCommand(query, connection))
{
    int count = command.ExecuteNonQuery();
}

有人可以向我展示一个使用连接两个数据库中的表的查询执行相同操作的示例吗?

2 个答案:

答案 0 :(得分:1)

所以,让我失望的是我需要两个连接字符串的假设。似乎没有任何方法可以在ADO.NET中构造涉及两个连接的单个查询。

就我而言,两个数据库都位于同一服务器上。因此,仅需要一个连接字符串。然后,查询可以包含数据库前缀以标识您要引用的数据库。

SELECT [DB1].[dbo].Field1, [DB2].[dbo].Field2 FROM ...

答案 1 :(得分:0)

您可以在两个DataTables中选择两者,然后使用Linq将它们加入。

var results = from par in dt1.AsEnumerable()
                join chi in dt2.AsEnumerable()
                  on (int)par["ID"] equals (int)chi["ParentID"]
                select new //Here you can leave it that way or use your own object.
                           // select new MyResultObject(){prop1 = x, prop2 = y ...}
                {
                    ParentID = (int)par["ParentID"],
                    ChildID = (int)par["ChildID"],
                    ColA = (string)par["ColA"],
                    ColB = (int)par["ColB"],
                    ColC = (double)chi["ColC"],
                    ColD = (date)chi["ColD"]
                };

希望它会有所帮助:)