Название: Qt + ODBC = Driver not loaded Отправлено: InternalsInside от Декабрь 11, 2005, 17:54 Здравствуйте,
Вот такая проблемка возникла... Поставил себе вчера Qt, начал доки читать и по мелочи эксперементировать. Сегодня захотел поэксперементировать с БД. И возникло несколько вопросов. Главный вопрос: Пишу такой код: Код: QSqlDatabase db = QSqlDatabase::addDatabase ("QODBC3"); После чего lastError() возвращает ошибку driver not loaded. Вопрос как его загрузить? Вопрос номер2: Чтобы работать с sql классами qt пришлось в настройках проекта в разделе linker указать еще либу qtsql4.lib - мне всегда так придется вручную подключать нужные либы или как-то можно автоматизировать? Заранее спасибо.[/code] Название: Qt + ODBC = Driver not loaded Отправлено: Dendy от Декабрь 12, 2005, 14:02 Відповідь 1:
Подивись будь ласка тут, може це та сама проблема: http://prog.org.ru/forum/topic_2141.html Відповідь 2: Бібліотеки на пальцях порахувати можна. Прийдеться підмикати руцями, не такий й гемор. :) В інтеграторі на початку проекту можна вибрати які заюзати ліби. Название: Qt + ODBC = Driver not loaded Отправлено: mistake от Август 26, 2006, 20:35 Ситуация: QT 4.1.4 + VS 2005. Подсоединяюсь к базе Access при помощи
Код: QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); Полет нормальный - коннект проходит, вижу какие есть таблицы в этой базе... Проблема: при попытке сделать запрос при помощи Код: // Запрашиваем кол-во записей Как такое может быть и что сие означает? Демонстрация SQL Browser нормально отрабатывает и отображает содержимое таблиц. Где глюк? добавлено спустя 4 часа 56 минут: заметил в окне debug сообщение Код: 'dbtool.exe': Loaded 'C:\WINDOWS\system32\odbcji32.dll', Cannot find or open a required DBG file. добавлено спустя 7 минут: Но вот чего я вообще не понимаю так это вот это: 1) почему прога коннектится к базе и дает возможность получить список таблиц в ней, но не дает выполнить запрос? 2) почему открытая в VS 2005 демонстрашка "SQL Browser" работает с этой же базой на ура? Название: Qt + ODBC = Driver not loaded Отправлено: DenKor от Август 28, 2006, 08:13 Скорее всего у тебя в path раньше указаны другие версии qt или файлы баз jet не той версии.
Которые скомпилированы без поддержки баз данных. У меня тоже была такая фигня Название: Qt + ODBC = Driver not loaded Отправлено: mistake от Август 28, 2006, 09:11 И эта "фигня" как-то решилась? Возможно проблема в том, что у меня стоит офис версии 2003 SBE (в составе него отсутствует MS Access), но я поставил поверх этого офиса MS Access из поставки MS Office 2003 Pro....
Название: Qt + ODBC = Driver not loaded Отправлено: DenKor от Август 28, 2006, 14:01 заметил в окне debug сообщениеКод:
'dbtool.exe': Loaded 'C:\WINDOWS\system32\odbcji32.dll', Cannot find or open a required DBG file. Это он ругается на отсутствии отладочных символов для библиотеки. Можно забить. Посмотри в окне debug твои ли библиотеки qt подгружаются при загрузки проги. У тебя могут подгружаться библиотеки из другой версии. Попробуй сам пересобери библиотеки odbc. >>почему открытая в VS 2005 демонстрашка "SQL Browser" работает с этой же >>базой на ура? Если эта демонтсрашка не вылетает на твоем операторе, то смотри опции соединения базы данных Название: Qt + ODBC = Driver not loaded Отправлено: mistake от Август 29, 2006, 20:53 Цитата: "DenKor" Посмотри в окне debug твои ли библиотеки qt подгружаются при загрузки проги. У тебя могут подгружаться библиотеки из другой версии. А как это посмотреть? По путям? Но я оставил только одну версию QT, остальные снес - так что это вряд ли является проблемой. Цитата: "DenKor" Попробуй сам пересобери библиотеки odbc. Это как? Microsoft Jet я ведь собрать не смогу... Цитата: "DenKor" >>почему открытая в VS 2005 демонстрашка "SQL Browser" работает с этой же >>базой на ура? Если эта демонтсрашка не вылетает на твоем операторе, то смотри опции соединения базы данных Смотрел. Ничего интересного не выявил... Придется еще раз копать код... :-( Подозреваю, что проблема все-таки в том, что у меня в настоящий момент две версии MS Office (SBE и PRO), попробую оставить одну... Название: Qt + ODBC = Driver not loaded Отправлено: zuxul от Ноябрь 22, 2006, 12:27 Итак, проблема над которой я ломаю голову уже второй день.
:( QSqlDatabase: QODBC driver not loaded QSqlDatabase: available drivers: Перечитал почти все топики(то что выдал мне поиск) форума на эту проблему... Положил скомпиленный драйвер($QTDir\plugins\sqldrivers\qsqlodbc.dll) в папку sqldrivers рядом с прогой, не помогло. Может я не правильно его компилировал...Не подскажите как правильно это сделать. Уставновливал дистрибутивы из этих файлов: MinGW-3.4.2.exe qt-win-opensource-4.1.2-mingw.exe компилирую в MinGW. Пожалуйста ответьте мне, на пару глупый вопросов. 1. Можно ли использовать QODBC без переконфигурации и новой сборки QT? 2. Собственно, если можно то как? 3. При запуске QT-шного примера, sql-браузера, при выборе QODBC драйвера, вываливается такая ошибка в окошке: An error ocured while opening the connection: [Microsoft][Диспечер драйверов ODBC] Источ... - дальше не видно. Может это у меня что-то с компутером? Название: Qt + ODBC = Driver not loaded Отправлено: BaltikS от Ноябрь 22, 2006, 14:05 Ответ простой, Qt - не видет драйвера. Я собирал QT VC6. И вот что я заметил с плагинами.... Если просто тупо копировать Qt с плагинами с одной машины на другую в тот же каталог - работают плагины.... Если любой другой, то плагины не видны.
1. Если версии QT совпадают и пути одинаковые - можно. 2. Использовать DLL qt-mtxxx.dll вместе с плагином, там где он был собран (для Qt3). 3. без коментариев... Название: Qt + ODBC = Driver not loaded Отправлено: zuxul от Ноябрь 22, 2006, 22:31 Извините, не описал сути проблемы, не загружается драйвер на машине, где установлен QT.
SQL Browser - из примеров QT, работает только с QSQLite драйвером... Цитата: "BaltikS" Ответ простой, Qt - не видет драйвера. Как заставить QT (или мою прогу?) увидеть его? Название: Qt + ODBC = Driver not loaded Отправлено: Mixolap от Ноябрь 24, 2006, 18:35 Сконфигурируй сборку с дровами odbc.
Под винду: configure -qt-sql-odbc mingw32-make Название: Qt + ODBC = Driver not loaded Отправлено: Dendy от Ноябрь 24, 2006, 21:09 Ещё солюшн - потереть ветку реестра:
Код: HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults Название: Qt + ODBC = Driver not loaded Отправлено: Tonal от Ноябрь 25, 2006, 12:43 Про расположение плагинов, и других файлов читать в ассистенте про qt.conf
Если кратко, то можно в директории проги создать каталог plugins, в нём подкаталог sqldrivers и туда ложить qsqlodbc.dll. Название: Qt + ODBC = Driver not loaded Отправлено: zuxul от Ноябрь 29, 2006, 01:12 Спасибо за помощь. Дело как всегда оказалось в кривых руках.
Делал все в тестовом режиме - в консоли - оказывается (!!! :-) ) надо создавать QApplication, чтобы все нормально работало. Название: Qt + ODBC = Driver not loaded Отправлено: Sidrian от Ноябрь 29, 2006, 17:05 У меня похожая проблема. Когда компилю программу с функцией
int connectDB() { QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("qttest"); db.setUserName("qttest"); db.setPassword("100000"); if (!db.open()) return 0; return 1; } все классно работает. Но стоит поместить эту функцию в ДЛЛ пишет QSlqlDatabase: QODBC Driver not loaded. А мне оно нужно именно в ДЛЛ потому что идея в том чтобы использовать это из С кода, где инклуд с такой функцией, естественно, не скомпилиться. Хотел вручную инстанцировать QODBCDriver. В мануале сказанно, что для этого надо инклудить соответствующий файл из qtdir/src/sql/drivers/. У меня в каталоге srz нет папки sql. Qt ver 4.2.0 evaluation for MSVS 2003. добавлено спустя 1 час: Скачал сорс Qt там есть файл qtdir/src/sql/drivers/odbc/qsql_odbc.cpp котый в мануале сказано инклудить. В ответ аолучаю тучу ворнингов о "inconsistent dll linkage" и пару ошибок "unresolved external". Название: Qt + ODBC = Driver not loaded Отправлено: Mixolap от Ноябрь 29, 2006, 17:09 Поставь нормальную версию, если тебя заказчик не ограничивает конечно.
http://www.trolltech.com/download?target=http://ftp.iasi.roedu.net/mirrors/ftp.trolltech.com/qt/source/qt-win-opensource-4.2.1-mingw.exe Название: Qt + ODBC = Driver not loaded Отправлено: Sidrian от Ноябрь 29, 2006, 17:41 У меня есть опен сорс версия но мне не очень хочется разбираться с тем, как все это шастие к CodeBlock прикрутить(я знаю что на эту тему есть кучу тредов, но простого негеморойного пути я нигде не нашел). И я не думаю что просто кину этот же сорс в mingw и все заработает. Или я не прав?
Название: Qt + ODBC = Driver not loaded Отправлено: Sidrian от Ноябрь 30, 2006, 12:01 Неужели никто не может подсказать в чем проблема с таким длл? Если ктото поможет на примере такой простой функции, тому мегареспект :)
Код:
Очень нужно! ЗЫ Если ре хотите колупаться с QODBC поставьте место него QSQLITE. В ДЛЛ при любом выборе драйвера пишет "Driver not loaded" хоть убейся. Название: Qt + ODBC = Driver not loaded Отправлено: Tonal от Ноябрь 30, 2006, 12:55 А QApplication у тебя когда создаёться?
Название: Qt + ODBC = Driver not loaded Отправлено: Sidrian от Ноябрь 30, 2006, 14:40 Для уверености написал таку вот дурню в ДЛЛ:
Код:
Не помогает. Название: Qt + ODBC = Driver not loaded Отправлено: Dendy от Ноябрь 30, 2006, 16:25 Естественно не помогает - QCoreApplication сразу же убивается. Даже не при вьІходе из DllMain, а после отработки конструктора. Создавай его в куче.
Тут такой вопрос вьІлезает, тьІ ету DLL только из Qt программ собираешься юзать или из любой? Название: Qt + ODBC = Driver not loaded Отправлено: Sidrian от Ноябрь 30, 2006, 18:51 В том то и идея. Мне нужно вызывать эту функцию из С кода. Я делаю библиотеку для работы с БД, но колупаца с ODBC не хотелось (правда после знакомства с Qt начинает хотеться :). Меня впринципе предупреждали что у Qt много своих мрачных приколов, но я думал что не все так плохо...
добавлено спустя 1 час 57 минут: Проблема отпала сама собой благодаря стиранию Qt и установке SQLAPI++ :) Название: Qt + ODBC = Driver not loaded Отправлено: Tonal от Декабрь 01, 2006, 08:37 Цитата: "Sidrian" Для уверености написал таку вот дурню в ДЛЛ: Код:
Не помогает. Класс! Берём учебник, читаем про локальные переменные. Цитата: "Sidrian" у Qt много своих мрачных приколов Самый мрачный прикол Qt, это то, что надо знать С++! А с таким знанием которое ты показал - действительно, Qt никуда не годиться. Как и любые другие библиотеки для С++! ;-) |