Чтение файла доступа в DataSet - PullRequest
2 голосов
/ 05 сентября 2008

Есть ли простой способ прочитать весь файл Access (.mdb) в DataSet в .NET (в частности, C # или VB)?

Или, по крайней мере, получить список таблиц из файла доступа, чтобы я мог проходить через него и добавлять их по одной в DataSet?

Ответы [ 5 ]

5 голосов
/ 05 сентября 2008

Спасибо за предложения. Я смог использовать эти примеры, чтобы собрать этот код, который, кажется, достигает того, что я ищу.

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
3 голосов
/ 05 сентября 2008

Вы должны иметь доступ к нему, используя OleDbConnection .

Вот Тут есть доступ к БД с использованием его для файлов MS Access.

С точки зрения получения имен таблиц, в те времена, когда я работал с VB6, я всегда использовал ADOX, не знаю, как они это делают в .NET сейчас ... Хотя я знаю, что в файле доступа есть системная таблица - хочу сказать: ... ". Я гуглю!

EDIT

Ах, ха! msysobjects !! XD

2 голосов
/ 05 сентября 2008

MSDN содержит статью о том, как использовать ADO.NET для подключения и редактирования записей в базе данных Access. После того, как ваше соединение OleDB установлено, вы можете легко создать свой DataReader / DataAdapter и обрабатывать по мере необходимости.

РЕДАКТИРОВАТЬ: Gah! Проклинаю тебя, Роб и твои богоподобные печатные способности !!! 8 ^ D

0 голосов
/ 16 сентября 2008

Ваш первоначальный вопрос в редакции - это чепуха

Есть ли простой способ прочитать весь файл Access (.mdb) в ...

Вы, конечно, не хотите получить все содержимое файла MDB. То, что вы хотите, это содержимое ваших таблиц данных, которые хранятся в MDB. Имейте в виду, что вам также не нужно содержимое системных таблиц.

Ключевой момент:

Вы спрашиваете о JET, а не о ДОСТУПЕ.

Jet - это ядро ​​базы данных, которое поставляется в качестве хранилища данных по умолчанию для Access (и в котором хранятся собственные объекты Access). Но «Доступ» означает нечто гораздо большее, чем просто таблицы данных.

Всякий раз, когда вы задаете вопрос и путаете Access и Jet, вы, скорее всего, получите хоть какие-то ненужные ответы.

И вас будут ругать такие, как я, потому что разработчики действительно должны знать лучше, чем скрывать важные различия.

0 голосов
/ 05 сентября 2008

Существует обсуждение по этому вопросу в Less Than . Вот один из примеров кода из обсуждения.

   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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...