Russian Qt Forum

Qt => Базы данных => Тема начата: Crazy Sage от Январь 19, 2012, 14:29



Название: Программа не может найти плагин odbc
Отправлено: Crazy Sage от Январь 19, 2012, 14:29
Пытаюсь подцепиться к *.accdb файлу через Qt, код подключения следующий:

Код:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ="+ui.dbLineEdit->text());
db.open();

У меня все работает, отправляю заказчику - пишет драйвер не найден.
На обоих компах установлен Microsoft Access database engine 2010 (English) скачанный с сайта майкрософта, файлы qsqlodbc4.dll и libqsqltodbc4.a я приложил к проекту вместе с другими dll-ками.
При этом у меня QSqlDatabase::Drivers выдает QSQLITE, QODBC3, QODBC, а у заказчика не выдает вообще ничего.
Единственное что - у меня 32-битная Win7, у него 64-битная, но вроде ведь в эту сторону совместимость должна быть (да и приложение собрано 32-битное)
Что еще может быть не так?


Название: Re: Программа не может найти плагин odbc
Отправлено: Странник от Январь 19, 2012, 14:59
я понимаю, что некоторые избитые темы должны быть забиты насмерть.
библиотека qsqlodbc4.dll должна лежать в %YOUR_EXE_DIR%/sqldrivers/qsqlodbc4.dll.


Название: Re: Программа не может найти плагин odbc
Отправлено: Crazy Sage от Январь 19, 2012, 17:14
Ай эм сорри. В смысле спасибо большое. За полчаса поиска в гугле этого нюанса не нашел (или просмотрел, что тоже вполне вероятно), потому решил спросить.


Название: Re: Программа не может найти плагин odbc
Отправлено: Alex_C от Июль 25, 2012, 14:27
Сейчас пробую подключиться к ODBC, вылетает ошибка:
"[Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию QODBC3: Unable to connect"
Это есть %YOUR_EXE_DIR%/sqldrivers/qsqlodbc4.dll
Подключаюсь
Код
C++ (Qt)
   db = QSqlDatabase::addDatabase("QODBC");
   db.setDatabaseName(QString("Driver={Microsoft Access Driver (*.mdb)};DSN='';DBQ=%1").
                      arg(dataBaseName));
 

тоже самое с SQLite работает без проблем.


Название: Re: Программа не может найти плагин odbc
Отправлено: CuteBunny от Июль 25, 2012, 14:34
Сейчас пробую подключиться к ODBC, вылетает ошибка:
"[Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию QODBC3: Unable to connect"
Это есть %YOUR_EXE_DIR%/sqldrivers/qsqlodbc4.dll
Подключаюсь
Код
C++ (Qt)
   db = QSqlDatabase::addDatabase("QODBC");
   db.setDatabaseName(QString("Driver={Microsoft Access Driver (*.mdb)};DSN='';DBQ=%1").
                      arg(dataBaseName));
 

тоже самое с SQLite работает без проблем.

DSN='' - лишнее по-моему, т.к. по строке видно, что dsn less connection string.


Название: Re: Программа не может найти плагин odbc
Отправлено: Alex_C от Июль 25, 2012, 14:48
Убрал - все тоже.


Название: Re: Программа не может найти плагин odbc
Отправлено: Alex_C от Июль 25, 2012, 15:21
Может это быть из-за того, что я драйвер не собира, а взял от сюда
D:\Qt\4.8.1\plugins\sqldrivers\qsqlodbc4.dll
он там вроде как готовый лежит


Название: Re: Программа не может найти плагин odbc
Отправлено: Alex_C от Июль 25, 2012, 15:46
Оказывается DRIVER - надо писать большими буквами.... Теперь работает!