2

Accessファイル(.mdb)全体を.NET(具体的にはC#またはVB)のDataSetに読み込む簡単な方法はありますか?

または、少なくともアクセスファイルからテーブルのリストを取得して、テーブルをループし、一度に1つずつDataSetに追加できるようにしますか?

4

5 に答える 5

5

提案をありがとう。これらのサンプルを使用してこのコードをまとめることができました。これにより、私が探しているものが達成されたようです。

Using cn = New OleDbConnection(connectionstring)
    cn.Open()
    Dim ds As DataSet = new DataSet()

    Dim Schema As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
    For i As Integer = 0 To Schema.Rows.Count - 1
        Dim dt As DataTable = New DataTable(Schema.Rows(i)!TABLE_NAME.ToString())

        Using adapter = New OleDbDataAdapter("SELECT * FROM " + Schema.Rows(i)!TABLE_NAME.ToString(), cn)
            adapter.Fill(dt)
        End Using

        ds.Tables.Add(dt)
    Next i
End Using
于 2008-09-05T18:40:24.960 に答える
3

OleDbConnectionを使用してアクセスできるはずです。

ここでは、 MSAccessファイルに使用するDBアクセスについて説明します。

テーブル名の取得に関しては、VB6の時代には、私は常にADOXを使用していましたが、現在.NETでこれをどのように行うかはわかりません。アクセスファイルにシステムテーブルがあることはわかっていますが、「mso ... "。グーグル!

編集

あはは!msysobjects !! xD

于 2008-09-05T18:31:43.653 に答える
2

MSDNには、ADO.NETを使用してAccessデータベースのレコードを接続および編集する方法に関する記事があります。OleDB接続が確立されると、DataReader / DataAdapterを簡単に作成し、必要に応じて処理できます。

編集:ガ!あなたのロブとあなたの神のようなタイピング能力を呪ってください!!! 8 ^ D

于 2008-09-05T18:31:57.430 に答える
0

あなたの元の質問はナンセンスです:

Access ファイル (.mdb) 全体を簡単に読み込む方法はありますか?

確かに、MDB ファイルの内容全体は必要ありません。必要なのは、MDB に格納されているデータ テーブルの内容です。システム テーブルの内容も必要ないことに注意してください。

キーポイント:

ACCESS ではなく、JET について質問しています。

Jet は、Access の既定のデータ ストアとして出荷されている (および Access 独自のオブジェクトが格納されている) データベース エンジンです。しかし、「アクセス」とは、単なるデータ テーブル以上のものを意味します。

質問をして Access と Jet を混同すると、少なくとも役に立たない回答が得られる可能性があります。

開発者は重要な違いを難読化するよりもよく知っている必要があるため、私のような人に叱られるでしょう。

于 2008-09-15T22:07:44.720 に答える
0

この点については、Less Than Dotで議論されています。以下は、ディスカッションのコードの一例です。

   public DataTable GetColumns(string tableName)
    {
        string[] restrictions = new string[4];
        restrictions[2] = tableName;

        _connDb.Open();

        DataTable mDT = _connDb.GetSchema("Columns", restrictions);

        _connDb.Close();

        return mDT;
    }
于 2008-09-05T18:43:19.257 に答える