Russian Qt Forum
Ноябрь 23, 2024, 19:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Driver not loaded (SQLite)  (Прочитано 11730 раз)
Xaero
Гость
« : Ноябрь 01, 2007, 15:51 »

Решил попробовать Qt. Наваял простенькую форму которая смотрит собердимое базы SQLite, а так же добавляет и удаляет записи в ней. Но как оказалось я не могу даже законектится к базе - прога пишет сабж  В замешательстве. привожу код:

#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqError>

inline bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("../test/work.db");
    if (!db.open())
    {
        QMessageBox::warning(0, QObject::tr("Database Error"),db.lastError().text());
        return false;
    }
    return true;
}

я так понял мне возвращается db.lastError().text()) (DRIVER NOT LOADED).
компиляция Qt проходила умолчанию, в папке plugins sqlite.dll лежат.

подскажите пожалуста - каким образом надо подключать драйвер к программе?
заранее благодарен...
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #1 : Ноябрь 01, 2007, 16:15 »

Решил попробовать Qt. Наваял простенькую форму которая смотрит собердимое базы SQLite, а так же добавляет и удаляет записи в ней. Но как оказалось я не могу даже законектится к базе - прога пишет сабж  В замешательстве. привожу код:

#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqError>

inline bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("../test/work.db");
    if (!db.open())
    {
        QMessageBox::warning(0, QObject::tr("Database Error"),db.lastError().text());
        return false;
    }
    return true;
}

я так понял мне возвращается db.lastError().text()) (DRIVER NOT LOADED).
компиляция Qt проходила умолчанию, в папке plugins sqlite.dll лежат.

подскажите пожалуста - каким образом надо подключать драйвер к программе?
заранее благодарен...

Я бы посоветовал сначала посмотреть и запустить какойнибудь из примеров. Например, любой из каталога QTDIR/examples/sql. Там все примеры работающие.
Записан
Kainit
Гость
« Ответ #2 : Ноябрь 01, 2007, 16:38 »

http://doc.trolltech.com/4.0/sql-driver.html
Troubleshooting
Цитировать
You should always use client libraries that have been compiled with the same compiler as you are using for your project. If you cannot get a source distibution to compile the client libraries yourself, you must make sure that the pre-compiled library is compatible with your compiler, otherwise you will get a lot of "undefined symbols" errors. Some compilers have tools to convert libraries, e.g. Borland ships the tool COFF2OMF.EXE to convert libraries that have been generated with Microsoft Visual C++.

If the compilation of a plugin succeeds but it cannot be loaded, make sure that the following requirements are met:

    * Ensure that you are using a shared Qt library; you cannot use the plugins with a static build.
    * Ensure that the environment variable QTDIR points to the right directory. Go to the $QTDIR/plugins/sqldrivers directory and make sure that the plugin exists in that directory.
    * Ensure that the client libraries of the DBMS are available on the system. On Unix, run the command ldd and pass the name of the plugin as parameter, for example ldd libqsqlmysql.so. You will get a warning if any of the client libraries couldn't be found. On Windows, you can use Visual Studio's dependency walker.

If you are experiencing problems with loading plugins, and see output like this

    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers: QMYSQL

the problem is probably that the plugin had the wrong build key. For debugging purposes, remove the corresponding entry in the $HOME/.qt/qt_plugins_(qtversion).rc file.

The next time you try to load this plugin, it will give you a more detailed error message.

1. Собирали левым компилятором а использовать пытаетесь в VS
2. Не находит пути.
3. Не забывайте о сложностях использования плагинов в статической сборке

И вообще, раз выдаётся driver not loaded, убедитесь в его доступности. Получите список доступных драйверов и поглядите.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Ноябрь 06, 2007, 02:01 »

В папке с ехе-хой пробовали создавать подкаталог sqldrivers и туда пихать драйвер?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Ноябрь 06, 2007, 02:34 »

А вобще, поищи по форуму. Такая тема поднималась уже миллион раз...

ЗЫ: Ваще пора сделать по этой теме вики
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
mistake
Гость
« Ответ #5 : Апрель 02, 2008, 00:06 »

...Получите список доступных драйверов и поглядите.
А меня вот как раз таки интересует - как получить список имеющихся в системе драйверов?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Апрель 02, 2008, 01:18 »

А меня вот как раз таки интересует - как получить список имеющихся в системе драйверов?

Цитировать
QStringList QSqlDatabase::drivers ()   [static]

Returns a list of all the available database drivers.


ЗЫ: Ассистант в помощь Подмигивающий
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #7 : Апрель 02, 2008, 16:48 »

...Получите список доступных драйверов и поглядите.
А меня вот как раз таки интересует - как получить список имеющихся в системе драйверов?

Неужели тяжело посмотреть demos. Там есть прекрасный пример sqlbrowser.
И к базе подключится, если есть драйвер, да и покажет имеющиеся драйверы.

Читайте ассистент и просматривайте примеры и демки. Там ответы на все вопросы.
Записан
mistake
Гость
« Ответ #8 : Апрель 04, 2008, 20:59 »

Ассистантом я пользуюсь, демки тоже смотрю. Кстати в Qt 4.3.2 не нашел демки SQLBrowser (в предыдущих версиях я ее видел); собственно из-за этого я и задал вопрос в надежде на быстрый ответ.
Тем не менее ответ я нашел сам. Извините за беспокойство.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.284 секунд. Запросов: 22.