crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Проблема с подключением qsqlibase, Driver not loaded
Tarigan
  опции профиля:
сообщение 20.4.2012, 12:20
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 20.4.2012
Пользователь №: 3336

Спасибо сказали: 0 раз(а)




Репутация:   0  


Проблема такая:
Собрал плагин firebird, полученные библиотеки 'qsqlibase4.dll' и 'qsqlibased4.dll' подсунул его в %QTDIR%\plugins\sqldrivers - при запуске выдает 'Driver not loaded'. Подложил, как советовали, fbclient.dll рядом с исполняемым файлом программы и в %QTDIR%\bin, а qsqlibase*.dll - в папку %myprog%\sqldrivers - тоже самое. путь к библиотекам указал вручную - ничего не изменилось.

QSqlDatabase::isDriverAvailable("QIBASE") возвращает true.

Среда:
Qt 4.7.2 Opensource / Qt Creator 2.4.1
MinGW 4.4.0
Firebird 2.1 (2.5 тоже пробовал)
Windows 7 HB SP1 / Windows XP Home SP3

Натолкните на умную мысль, третий день бьюсь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
haiflive
  опции профиля:
сообщение 20.4.2012, 12:50
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 37
Регистрация: 8.7.2010
Пользователь №: 1868

Спасибо сказали: 1 раз(а)




Репутация:   0  


Я больше чем уверен, что ошибка именно в том, что ты не подключил sql модуль в файле проекта.
Открываешь файл проекта "*.pro" и дописываешь в диррективу "QT" модуль "sql"
например вот так
Цитата
QT += core gui sql


Если не получится выкладывай все исходные коды.

Сообщение отредактировал haiflive - 20.4.2012, 12:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tarigan
  опции профиля:
сообщение 20.4.2012, 12:57
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 20.4.2012
Пользователь №: 3336

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(haiflive @ 20.4.2012, 13:50) *
Я больше чем уверен, что ошибка именно в том, что ты не подключил sql модуль в файле проекта.

Если бы все так просто было :)

По поводу исходников - не работает даже пример из документации
     QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE");
     db.setHostName("192.168.0.11");
     db.setDatabaseName("rtm.fdb");
     db.setUserName("sysdba");
     db.setPassword("masterkey");
     bool ok = db.open();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
haiflive
  опции профиля:
сообщение 20.4.2012, 13:01
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 37
Регистрация: 8.7.2010
Пользователь №: 1868

Спасибо сказали: 1 раз(а)




Репутация:   0  


sqlite работает?.

можно ещё так попробовать
a.addLibraryPath(QString("./plugins/"));

где "./plugins/" путь к плагину.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tarigan
  опции профиля:
сообщение 20.4.2012, 13:05
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 20.4.2012
Пользователь №: 3336

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(haiflive @ 20.4.2012, 14:01) *
sqlite работает?.

Гм... Тоже нет, кстати. Так же выдает 'Driver not loaded'.
Цитата
можно ещё так попробовать
a.addLibraryPath(QString("./plugins/"));

где "./plugins/" путь к плагину.

    QStringList list_path;
    QDir dir = QDir(a.applicationDirPath() + QDir::separator() + "sqldrivers" + QDir::separator());
    list_path << dir.absolutePath() << a.libraryPaths();
    a.setLibraryPaths(list_path);


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
haiflive
  опции профиля:
сообщение 20.4.2012, 13:07
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 37
Регистрация: 8.7.2010
Пользователь №: 1868

Спасибо сказали: 1 раз(а)




Репутация:   0  


Выложи файл проекта посмотреть.
И файл main.cpp

Сообщение отредактировал haiflive - 20.4.2012, 13:08
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tarigan
  опции профиля:
сообщение 20.4.2012, 13:14
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 20.4.2012
Пользователь №: 3336

Спасибо сказали: 0 раз(а)




Репутация:   0  


testdb1.pro
QT       += core gui sql

TARGET = testdb1
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

main.cpp
#include <QtGui/QApplication>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QDebug>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    
    qDebug() << QSqlDatabase::isDriverAvailable("QIBASE");//returns true
    QSqlDatabase *db = new QSqlDatabase;
    db->addDatabase("QIBASE");
    db->setHostName("192.168.0.11");
    db->setDatabaseName("rtm.fdb");
    db->setUserName("sysdba");
    db->setPassword("masterkey");

    db->open();

    qDebug() << db->lastError().text();//"Driver not loaded Driver not loaded"

    return a.exec();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
haiflive
  опции профиля:
сообщение 20.4.2012, 13:17
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 37
Регистрация: 8.7.2010
Пользователь №: 1868

Спасибо сказали: 1 раз(а)




Репутация:   0  


http://doc.crossplatform.ru/qt/4.5.0/sql-driver.html#qibase
Цитата
Помните, что C:\interbase\bin должен быть в PATH.


Может дело в этом?. прописать переменные среды окружения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tarigan
  опции профиля:
сообщение 20.4.2012, 13:19
Сообщение #9


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 20.4.2012
Пользователь №: 3336

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(haiflive @ 20.4.2012, 14:17) *
Может дело в этом?. прописать переменные среды окружения.

PATH=<...>;C:\Firebird\Firebird_2_1\bin
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DOGG
  опции профиля:
сообщение 20.4.2012, 14:27
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 44
Регистрация: 9.8.2011
Из: Калининград
Пользователь №: 2798

Спасибо сказали: 6 раз(а)




Репутация:   0  


у вас проблема при создании объекта базы!

QSqlDatabase *db = new QSqlDatabase;


из документации:
Цитата
QSqlDatabase::QSqlDatabase ()

Creates an empty, invalid QSqlDatabase object. Use addDatabase(), removeDatabase(), and database() to get valid QSqlDatabase objects.


создавайте базу используя QSqlDatabase::addDatabase
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.4.2024, 12:59