2013-10-26 35 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

相關問題