2

我目前有一个站点(.net 2.0),其中包含用于数据的 MS Access DB,在 access.mdb 中有来自同一站点上另一个数据库的 2 个链接表。- 我所有的代码都工作正常,我所有的数据库连接都指向一个数据库。我现在需要达到相同的结果,但不想在实时数据库中创建链接。如何通过另一种方法获得相同的结果?

我查看了一个示例:从不同数据库导入的语法 - 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;
4

1 回答 1

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();
}

这会创建一个“视图”(在 Access 中保存的查询),它看起来就像链接表一样工作。

于 2013-10-29T13:46:32.890 回答