質問

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

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

役に立ちましたか?

解決

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

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

他のヒント

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

こちらです MS Access ファイルにそれを使用した DB アクセスについて説明します。

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

編集

あはは! msysオブジェクト !!xD

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

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

この点については、次のような議論があります。 ドット未満. 。ここでの議論のコードの一例を次に示します。

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

あなたの元の質問は、文面どおりではナンセンスです。

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

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

重要なポイント:

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

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

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

そして、あなたは私のような人たちから叱られるでしょう。なぜなら、開発者は重要な違いを曖昧にすることをよく知っているはずだからです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top