Alan Balkany Ответов: 1

Самый простой способ получить ADO.NET строка подключения для базы данных mdb


Я учусь ADO.NET и застрял на несколько дней, пытаясь получить строку подключения для простой, ванильной базы данных .mdb. Я пробовал потенциальные строки подключения и перестановки, но ничего не работает; соединение с базой данных никогда не открывается.

Администратор источника данных ODBC перечисляет драйвер следующим образом: "Driver do Microsoft Access (*.mdb)". Другое приложение может успешно открыть эту базу данных, поэтому я знаю, что моя система способна на это.

Может ли кто-нибудь предложить простую строку подключения, которая будет работать?

Что я уже пробовал:

Попробовал струны из connectionstrings.com-да. Пробовал статьи, в которых обсуждались строки подключения.

1 Ответов

Рейтинг:
12

Dave Kreskowiak

Это должна быть база данных более старого стиля (Access 2003 и старше). Обычно он использует реактивный двигатель, а не эйс, хотя эйс все еще может открыть его.

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path to database.mdb;
или
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=path to database.mdb;
Конечно, вам понадобится среда выполнения Access или соответствующая версия Office, установленная для ее открытия, даже из вашего собственного кода, на каждой машине, которая будет использовать базу данных.

Для JET это Access 2003 и ниже. Для ACE это любая версия Access выше 2003 года.

РЕДАКТИРОВАТЬ:
Да, и еще ... MDB-файл должен находиться в папке, к которой пользователь имеет права на чтение и запись. Это не включает в себя ничего из программных файлов.


Alan Balkany

Спасибо, Дэйв. Попробовал и получил: "System.Data.Odbc.OdbcException: 'ERROR [IM002] [Microsoft][ODBC Driver Manager] имя источника данных не найдено и драйвер по умолчанию не указан'"

Код:

IDbConnection myConn = new OdbcConnection(GetConnectionString ());
myConn.Открыть();

Ошибка возникает при вызове Open (). Я использую вашу строку подключения вот так:

возвращение @"поставщика=Майкрософт.Туз.Oledb для.12.0;Источник данных=с:\зы\данных\базы данных\экстрим.МБР;";

Это происходит с обеими строками соединения. Что я делаю не так?

Dave Kreskowiak

МММ...вы используете ODBC, а не OLEDB. Вы не можете использовать OLEDB-провайдера с ODBC.

Измените материал ODBC на версии OLEDB:

string connString = GetConnectionString();
OleDbConnection conn = new OleDbConnection(connString);   // DON'T combine statements together. It make debugging code harder.
conn.Open();

Alan Balkany

Вот и все! Спасибо, Дэйв! :)