Qt + ODBC + mdb (Unable to connect)

Модератор: Модераторы разделов

2E3S
Сообщения: 6
ОС: Debian

Qt + ODBC + mdb

Сообщение 2E3S »

Не получается открыть БД. Код такой (с офф справки):

Код: Выделить всё

    db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=/home/diclev/Desktop/works/bayes/db1.mdb");
    if (db.open()) {
        qDebug("success");
    } else qDebug(db.lastError().text().toAscii().data());

qDebug выводит: [unixODBC][Driver Manager]Data source name not found, and no default driver specified QODBC3: Unable to connect
Что делал:
Установил unixodbc, unixodbc-dev, libmdbodbc, libmdbtools, mdbtools
Компилировал
$ cd /opt/qtsdk-2009.03/qt/src/plugins/sqldrivers/odbc
# qmake "INCLUDEPATH+=/usr/include" "LIBS+=-L/usr/lib -lodbc"
# make
# cp /opt/qtsdk-2009.03/qt/src/plugins/sqldrivers/odbc/libqsqlodbc.so /opt/qtsdk-2009.03/qt/plugins/sqldrivers/libqsqlodbc.so
Права на исполнение есть у всей папки рекурсивно.
Система: Debian 5
В чем может быть проблема? Что я упустил?
Спасибо сказали:
Аватара пользователя
Omnifarious
Сообщения: 119
ОС: Gentoo x86_64

Re: Qt + ODBC + mdb

Сообщение Omnifarious »

К сожалению, с unixODBC никогда не сталкивался, но есть пара идей, может -- помогут.
[unixODBC][Driver Manager]Data source name not found, and no default driver specified QODBC3: Unable to connect

Сообщение об ошибке наводит на мысль проверить путь к файлу БД. Потом попробовать загрузить файл из того же каталога, где и программа.

Еще одна мысль -- драйвер для Microsoft Access надо где-то в unixodbc зарегистрировать.
There is more than one way to do it
Спасибо сказали:
2E3S
Сообщения: 6
ОС: Debian

Re: Qt + ODBC + mdb

Сообщение 2E3S »

Спасибо за внимание, жаль только что никто не ведает про работу со столь известным форматом. Под Windows если честно тоже не удалось запустить QODBC, правда, я не старался сильно.
Забыл дополнить описание. БД лежит в том же каталоге, что и программа. Пробовал убирать все пути кроме названия самого файла.
Искал как настраивать ODBC, не нашел что-то. То есть нашел к примеру с DSN, но такое не нужно, что-нибудь бы поуниверсальней, чтобы файлы можно открывать динамически (как в ADO). Ну попробовал настроить и с этим DSN. Не работает с такими настройками:
/etc/odbc.ini
[db1]
Description = Base
Driver = Microsoft Access Driver (*.mdb)
Database = /home/diclev/Desktop/works/bayes/db1.mdb
Servername = localhost

/etc/odbcinst.ini:
[Microsoft Access Driver (*.mdb)]
Description = MDB Tools ODBC drivers
Driver = /usr/lib/libmdbodbc.so
Setup =
FileUsage = 2
CPTimeout =
CPReuse =

/home/diclev/.odbc.ini:
[db1]
Description = MS Access file
Driver = /usr/lib/libmdbodbc.so
Database = /home/diclev/Desktop/works/bayes/db1.mdb

ошибка теперь [unixODBC]Could not find DSN in connect string QODBC3: Unable to connect
Неужели нет ничего адекватного для работы с mdb в linux. Еще и в Qt.
Спасибо сказали:
Аватара пользователя
panter_dsd
Сообщения: 157
Статус: Жаждущий знаний
ОС: Slackware 12

Re: Qt + ODBC + mdb

Сообщение panter_dsd »

Код: Выделить всё

DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access;};DBQ=C:\FkClnt1\DATA\client.mdb;

Вот как выглядит строка подключения под виндой. Попробуй такое же провернуть.

С уважением.
Пантер.
Спасибо сказали:
2E3S
Сообщения: 6
ОС: Debian

Re: Qt + ODBC + mdb

Сообщение 2E3S »

А какая разница? В точке с запятой?
Под виндой то все нормально, по крайней мере мне выдавалась вроде не особо существенная ошибка, а вот для unixODBC не получается настроить чтоб файлом без DSN открывалось...
Спасибо сказали:
Аватара пользователя
panter_dsd
Сообщения: 157
Статус: Жаждущий знаний
ОС: Slackware 12

Re: Qt + ODBC + mdb

Сообщение panter_dsd »

2E3S писал(а):
03.11.2009 16:21
А какая разница? В точке с запятой?
Под виндой то все нормально, по крайней мере мне выдавалась вроде не особо существенная ошибка, а вот для unixODBC не получается настроить чтоб файлом без DSN открывалось...

Тьфу, не заметил. :( Тогда не знаю.

С уважением.
Пантер.
Спасибо сказали: