Чтение файла доступа в DataSet

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
6 870
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

У вас должна быть возможность получить к нему доступ, используя OleDbConnection.

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

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

РЕДАКТИРОВАТЬ

Ага! msysobjects !! xD

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

Обновлено: Ага! Будь проклят, Роб, и твои богоподобные печатные способности !!! 8 ^ D

Ответ принят как подходящий

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

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

Обсуждение этого вопроса есть в Меньше точки. Вот один пример кода из обсуждения.

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

Ваш первоначальный вопрос в том виде, в каком он сформулирован, не имеет смысла:

Is there an easy way to read an entire Access file (.mdb) into...

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

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

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

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

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

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

Другие вопросы по теме