2

私は現在、データ用のMS Access DBを備えたサイト(.net 2.0)を持っています.access.mdb内には、同じサイト上の別のDBからの2つのリンクされたテーブルがあります。- すべてのコードが正常に動作し、すべての DB 接続が 1 つの DB を指しています。同じ結果を得る必要がありますが、ライブ DB にリンクを作成したくありません。別の方法で同じ結果を得るにはどうすればよいですか?

次の例を見ました:異なるDBからインポートするための構文 - MS Access

私のテーブルは大きく、これが最速の方法だとは思いません.2つの接続とテーブルでの作業の方が良いと思いますが、これを達成するための適切な方法を受け入れています.

これは、1 つの DB への接続を含む私の web.conf ファイルです。

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

私の最終結果は、次のような異なるDBの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 に答える