Добрый день,
Подскажите где читать (или примерчиком): надо все действия с подключением к БД вынести в динамическую библиотечку, как тогда юзать эту БД?
спасибо...
#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();
}
}
#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;
}
#ifndef __DB_H__
#define __DB_H__
#include <QtSql>
extern "C" {
bool createConnections();
}
#endif // __DB_H__
Fct fct = (Fct)(libdb.resolve("createConnections"));
if (fct)
{
fct(); // <<<< Вызов самой функции
qDebug() << "==> main.cpp - connect ok";
}
else
{
qDebug() << "==> main.cpp - connect bad";
}
typedef bool (*Fct) ();
Fct fct = (Fct)(libdb.resolve("createConnections"));
if (fct)
{
if (fct())
{
qDebug() << "==> main.cpp - connect ok";
}
else
{
qDebug() << "==> main.cpp - connect bad";
}
}
else
{
return 1;
}