2013-10-26 37 views
2

我目前有一个网站(.net 2.0)与MS Access数据库的数据,access.mdb内是来自另一个数据库在同一网站的2个链接表。 - 我所有的代码工作正常,我所有的数据库连接都指向一个数据库。我现在需要获得相同的结果,但不希望在活动数据库中创建链接。如何通过另一种方法实现相同的结果?链接来自不同的远程MS Access数据库的两个表

我看着从一个例子:Syntax for Import Into from Different DBs - MS Access

我的表很大,不认为这是最快的方式,我想两个连接,并与表工作会更好,但我开到正确的方法来完成这一点。

这是我的web.conf文件,连接到一个数据库。

<connectionStrings> 
<clear /> 
<add name="OdbcServices" connectionString="Driver={Microsoft Access Driver (*.mdb)};Dbq=e:\LeaveDB.mdb;" /> 
</connectionStrings> 

我的最终结果,我需要从不同的数据库的类似加入2个表:

SELECT username.table1, password.table1, fullname.table2 FROM Table1 INNER JOIN [;DATABASE=Z:\Docs\Test.mdb].Table2 ON username.table1 = username.table2; 
+0

如果您通过查询导入数据,这是一次交易是不是?在那种情况下,它没有多少数据。 – Plutonix

+0

我想你的权利,你会碰巧有一个正确的语法的例子吗?我似乎无法弄清楚vb.net中两个表的链接和连接我是否将表导入为新表,然后执行现有查询,然后删除表? – BarclayVision

+0

这是正确的,我期待有一个查询,从两个不同的数据库获取表 – BarclayVision

回答

1

而不是创建一个“官方”的链接表(TableDef对象),你可能会简单地创建一个脱身查看该点指向其他数据库中的表格。我只是在C#中尝试这样做,它似乎很好地工作:

string myConnectionString; 
myConnectionString = 
     @"Provider=Microsoft.ACE.OLEDB.12.0;" + 
     @"Data Source=C:\Users\Public\Database1.accdb;"; 

using (var con = new OleDbConnection()) 
{ 
    con.ConnectionString = myConnectionString; 
    con.Open(); 

    using (var cmd = new OleDbCommand()) 
    { 
     cmd.Connection = con; 
     cmd.CommandType = System.Data.CommandType.Text; 
     cmd.CommandText = 
       @"CREATE VIEW otherTable AS " + 
       @"SELECT * FROM [;Database=C:\__tmp\main.accdb].otherTable"; 
     cmd.ExecuteNonQuery(); 
    } 
    con.Close(); 
} 

,创建一个“视图”(保存在访问查询),似乎工作就像一个链接表。

+0

这是伟大的,查询做的伎俩,唯一的问题,我似乎无法找到是如何DROP我用这个脚本创建的查询?我所有的搜索似乎都指向删除记录的查询? – BarclayVision

+0

@BarclayVision'DROP VIEW otherTable'不起作用? –

+0

实际上,我只是做了DROP otherTable,因为我没有与QUERY(VIEW)具有相同名称的TABLE,因此DROP VIEW只能在QUERY上工作? – BarclayVision

相关问题