Connect to Microsoft Access database with C# .Net core
I want to connect to an MS Access database with C# in .Net core. Therefore, I will be able to write queries to create, read, update, and delete (CRUD) records.
OS driver
From experience, I would recommend run the web app on Windows rather than Linux. On Windows, the only driver needed to be installed is MS Access Database Engine 2010 or MS Access Database Engine 2016. But for Linux, I couldn’t find a free driver.
Install Odbc connection
In visual studio, while your project is open, go to NuGet package manager:
Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution
Search for and install System.Data.Odbc package by Microsoft. My version is 4.7.
Connection string
Define the connection string as
Change my database address to yours. Leave the rest as it is.
Write a query
The easiest way to write a query is to use the MS Access Query Design tool. Copy the query and edit the variables in C# like:
Non-return query
The method below can be used for queries that no data is pulled like create, update, and delete.
Data return query
The sample below can be used when multiple rows of a table are pulled from the MS Access database.
Safe get
The pulled records can be null . Create the extension class below. Therefore, Instead of using GetString , GetDouble , etc. of OdbcDataReader , we use the below methods to handle null records. See the usage of methods in the example of the previous section.
Работа с базой данной MS Access в C#
Для соединения с базой данных MS Access (файл .mdb) в C# следует использовать класс OleDbConnection со следующими параметрами соединения:
Здесь databaseFile — абсолютный путь к файлу базы данных Access. Провайдер соединения должен иметь значение Microsoft.Jet.OLEDB.4.0 .
Пример параметров соединения с файлом базы данных Microsoft Access:
Бэкслеши в пути файла следует заэскейпить (именно поэтому в примере вместо одного бекслеша поставлено по два).
Вышеупомянутую строку параметров соединения следует передать конструктору:
OleDbConnection myOleDbConnection = new OleDbConnection(connectionString);
Ниже приведен листинг программы, которая подключается к базе данных клиентов в формате MS Access и выводит информацию по первому клиенту. Для отправки SQL-запросов и чтения их результатов здеь используются объекты OleDbCommand и OleDbDataReader .
Результатом работы программы будет следующий текст:
myOleDbDataReader[«CompanyName»] = Кто-то и Компания
myOleDbDataReader[«ContactName»] = Кто-то
myOleDbDataReader[«Address»] = Улица Какая-то, д.12
Добавление, изменение и удаление данных в БД
Для чтения данных из БД MS Access используется класс OleDbDataReader . Но для выполнения запросов на вставку, изменение, или удаление данных из базы данных следует использовать метод класса OleDbCommand ExecuteNonQuery () . Его вызов выполняет указанный в свойстве CommandText класса OleDbCommand запроc и возвращает int -число затронутых запосом полей.
В данном случае rowsAffected будет равняться единице.
Во время INSERT ‘ов можно использовать параметры, что может пригодиться, например, для загонки в базу данных файла изображения.
Однако во взаимодействии C# и СУБД Microsoft Access есть одна очень неприятная загвоздка: при каких-либо ошибках в синтаксисе, или структуре SQL-запроса, программа падает в OS Loader Lock, и не дает никакой информации о произошедшей ошибке.
Чтобы этого избежать и получить довольно исчерпывающую информацию о произошедшей ошибке, следует выполнять запросы в try-catch блоках:
Работа через DataSet и DataTable
При работе через DataSet и DataTable все аналогично за исклением того, что вместо OleDbCommand используется OleDbDataAdapter :
How to connect to a MS Access file (mdb) using C#?
I’m trying to connect to a mdb file and I understand that I would need Microsoft.OLEDB.JET.4.0 data provider. Unfortunately, I do not have it installed on the (University) machine. Since, they don’t provide that provider, I believe there should be a way around.
How can I connect to the file without Microsoft.OLEDB.JET.4.0 or is there any alternative ?
I have following providers:

I have tried using OLE DB Provider for Microsoft Directory Services , to which while testing connection, I get ‘Test succeeded but some settings were not accepted by the provider’. I took that string and used it anyway and I got ADsDSOObject’ failed with no error message available, result code: DB_E_ERRORSINCOMMAND(0x80040E14) .
Подключение базы данных Microsoft Access к приложению в Microsoft Visual Studio
База данных имеет одну таблицу с именем «Tovar».
Необходимо осуществить подключение базы данных к Windows -приложению на языке C# средствами Microsoft Visual Studio 2010 . Приложение должно быть реализовано как Windows Forms Application .
⇑
Выполнение
1. Создание приложения типа Windows Forms Application .
⇑
2. Вызов мастера подключения.
Для доступа к файлу базы данных необходимо сделать его подключение к приложению. Это осуществляется путем вызова команды « Add New Data Source… » из меню « Data » (рис. 1) либо кликом на крайней левой кнопке с панели инструментов Data Source .

Рисунок. 1. Вызов мастера подключения к файлу базы данных
⇑
3. Выбор типа источника данных.
В результате откроется окно мастера для подключения к источнику данных которое изображено на рис. 2.

Рисунок. 2. Выбор типа подключения из которого приложение будет получать данные
В окне необходимо выбрать один из четырех возможных вариантов подключения к источнику данных. В MS Visual Studio существует четыре типа подключения к источникам данных:
- Database – подключение к базе данных и выбор объектов базы данных;
- Service – открывает диалоговое окно Add Service Reference позволяющее создать соединение с сервисом, который возвращает данные для вашей программы;
- Object – позволяет выбрать объекты нашего приложения, которые в дальнейшем могут быть использованы для создания элементов управления ( controls ) с привязкой к данным;
- Share Point – позволяет подключиться к сайту SharePoint и выбрать объекты для вашей программы.
В нашем случае выбираем элемент Database и продолжаем нажатием на кнопке Next .
⇑
4. Выбор модели подключения к базе данных.
Следующий шаг – выбор модели подключения к базе данных (рис. 3).

Рис. 3. Выбор модели подключения к базе данных
Система предлагает выбор одного из двух вариантов:
- модели данных на основе набора данных ( Dataset );
- модели данных Entity , что означает, что система может сгенерировать модель данных из базы данных которой могут выступать сервера баз данных Microsoft SQL Server , Microsoftt SQL Server Compact 3.5 или Microsoft SQL Server Database File , либо создать пустую модель как отправную точку для визуального проектирования концептуальной модели с помощью панели инструментов.
В нашем случае выбираем тип модели данных DataSet .
⇑
5. Задание соединения с БД.
Следующим шагом мастера (рис. 4) есть выбор соединения данных которое должно использоваться приложением для соединения с базой данных.

Рис. 4. Выбор соединения с базой данных
Для создания нового соединения необходимо выбрать кнопку « New Connection… «. В результате откроется окно « Add Connection » (рис. 5) в котором нужно добавить новое соединение Microsoft Access и выбрать маршрут к файлу базы данных.
В нашем случае поле « Data source » уже содержит нужный нам тип соединения « Microsoft Access Database File (OLE DB) «.

Рис. 5. Добавление нового соединения и выбор файла базы данных
Если нужно выбрать другую базу данных, то для этого используется кнопка « Change… «, которая открывает окно, изображенное на рисунке 6.

Рис. 6. Смена источника данных
В окне на рисунке 6 системой Microsoft Visual Studio будет предложено следующие виды источников данных:
- Microsoft Access Database File – база данных Microsoft Access ;
- Microsoft ODBC Data Source – доступ к базе данных с помощью программного интерфейса ODBC ( Open Database Connectivity );
- Microsoft SQL Server ;
- Microsoft SQL Server Compact 3.5 ;
- Microsoft SQL Server Database File ;
- Oracle Database – база данных Oracle .
Нажимаем кнопку « Browse… » и в открывшемся окне (рис. 7) « Add Connection » выбираем маршрут к файлу базы данных « db1.mdb «. Целесообразно размещать файл базы данных в каталоге содержащим исполняемый модуль приложения.
Для проверки правильности установленного соединения можно воспользоваться кнопкой « Test Connection «.

Рисунок 7. Окно « Add Connection » с выбранной базой данных « db1.mdb «
После нажатия на кнопке ОК система сгенерирует строку « Connection string » (рис. 8) который в дальнейшем будет использован для программного подключения к базе данных.
Кликаем на « Next » для продолжения работы мастера.

Рис. 8. Строка Connection string
После выбора Next система выдаст информационное окно следующего вида (рис. 9). Если выбрать «Да», то файл базы данных « db1.mdb » будет копироваться в выходной каталог приложения каждый раз при его запуске в среде MS Visual Studio . Как правило, это каталог, содержащий основные модули приложения. В нашем случае каталог
В этом каталоге размещаются все основные исходные модули проекта, например Program.cs (модуль, содержащий основную функцию WinMain() ) , Form1.cs (содержит исходный код обработки главной формы приложения) и другие.

Рисунок 9. Окно добавления файла базы данных в проект
⇑
6. Формирование конфигурационного файла приложения.
После выбора кнопки « Next » мастера откроется следующее окно, в котором предлагается сохранить строку соединения в конфигурационный файл приложения (рис. 10).

Рисунок 10. Предложение записи строки подключения к базе данных в конфигурационный файл приложения
Ничего не изменяем, оставляем все как есть (кликаем на Next ).
⇑
7. Выбор объектов базы данных для использования в программе
Последнее окно мастера (рисунок 11) предлагает выбрать список объектов (таблиц, запросов, макросов, форм и т.д.), которые будут использоваться в наборе данных. Как правило выбираем все таблицы базы данных. В нашем примере база данных содержит всего одну таблицу с именем Tovar .

Рисунок 11. Выбор объектов базы данных, которые будут использоваться в данном наборе данных
После выбора кнопки « Finish » заканчиваем работу с мастером подключения. Теперь база данных подключена к приложению и будет автоматически подключаться при его запуске или при его проектировании в MS Visual Studio .
⇑
8. Что же изменилось в программе после выполнения мастера?
Если выбрать панель Data Source (рисунок 12), то можно увидеть, как подключен набор данных с именем db1Dataset в котором есть таблица с именем Tovar .

Рисунок 12. Окно DataSources содержит подключение к базе данных
Точно также можно увидеть изменентия в панели Server Explorer (рисунок 13), где появилась база данных « db1.mdb » с таблицей Tovar и ее полями. Приложение может подключать не только одну, но и несколько баз данных.

Рис. 13. Окно приложения с изменениями в панели Server Explorer
⇑
9. Подключение методов оперирования базой данных.
Для того, чтобы использовать методы, которые будут работать с базой данных MS Access (и не только MS Access ), необходимо подключить пространство имен System.Data.OleDb .
Для этого в основной форме ( Form1.cs ) в Solution Explorer выбираем режим просмотра кода (View Code) из контекстного меню (рис. 14) и вначале файла добавляем следующую строку:

Рисунок 14. Вызов программного кода главной формы приложения ( Form1.cs ) с помощью Solution Explorer
Общий вид верхней части файла Form1.cs будет следующим:
На этом этапе подключение к базе данных db1.mdb выполнено. Дальнейшими шагами есть создание программного кода для оперирования данными в базе данных.