crossplatform.ru

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

> Подключение к БД из динамической библиотеки
sanya
  опции профиля:
сообщение 31.7.2008, 15:01
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 31.7.2008
Из: Рамбов
Пользователь №: 246

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




Репутация:   0  


Добрый день,
Подскажите где читать (или примерчиком): надо все действия с подключением к БД вынести в динамическую библиотечку, как тогда юзать эту БД?
спасибо...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
sanya
  опции профиля:
сообщение 1.8.2008, 11:18
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 31.7.2008
Из: Рамбов
Пользователь №: 246

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




Репутация:   0  


Прошу прощения, но не совсем понимаю... (новичек я в С...)

пробую таким образом:
исходники
main.cpp
#include <QtGui>
#include <QtSql>

int main(int argc, char* argv[]) {
    QApplication app (argc, argv);

    QLibrary libdb("../db/bin/libdb");
    if (libdb.load()) {
        qDebug() << "==> main.cpp - libdb ok";
    } else {
        qDebug() << "==> main.cpp - libdb bad" << libdb.errorString();
    }
    
    typedef bool (*Fct) ();
    Fct fct = (Fct)(libdb.resolve("createConnections"));
    if (fct) {
        qDebug() << "==> main.cpp - connect ok";
    } else {
        qDebug() << "==> main.cpp - connect bad";
    }
    
    QSqlDatabase db = QSqlDatabase::database("psql");
    if ( !db.open() ) {
        qDebug() << "Failed to open database: " << db.lastError().driverText();
    }
}


db.cpp
#include "db.h"

bool createConnections()
{
    QSqlDatabase db = QSqlDatabase::addDatabase( "QPSQL", "psql" );
    db.setDatabaseName( "ArisPSQLBase" );
    db.setUserName( "sanya" );
    db.setPassword( "*****" );
    db.setHostName( "192.168.87.1" );
    if ( !db.open() ) {
        qDebug() << "Failed to open database: " << db.lastError().driverText();
        return FALSE;
    }
    return TRUE;
}


db.h
#ifndef __DB_H__
#define __DB_H__
#include <QtSql>

extern "C" {
    bool createConnections();
}

#endif // __DB_H__


а в консоле вижу:
==> main.cpp - libdb ok
==> main.cpp - connect ok
Failed to open database: "Driver not loaded"

то есть, в библиотечке коннект происходит, а в основной программе нет... в чем я не прав и как быть?
Причина редактирования: можно использовать тэг expand в качестве обертки тэга code=cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 13.12.2025, 23:46