.[ ČeskéHry.cz ].
FireBird driver - Qt

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
devillante



Založen: 14. 08. 2007
Příspěvky: 164

PříspěvekZaslal: 11. září 2009, 11:03:58    Předmět: FireBird driver - Qt Odpovědět s citátem

Ahoj,
mám problém s pluginem do Qt IBasem. Verze: Windows Vista, Firebird 2.1, QT z 2009-03. Při kompilování driveru jsem postupoval dle rad na různých fórech a celkem bez problémů driver zkompiloval. Upravil jsem ibase.pro, jak je dáno v nejbližší citaci a bez chyb projekt zkompiloval.

citace:
TARGET = qsqlibase HEADERS= ../../../sql/drivers/ibase/qsql_ibase.h
SOURCES= main.cpp \
../../../sql/drivers/ibase/qsql_ibase.cpp
INCLUDEPATH += C:\Firebird\Firebird_2_1\include
LIBS += -LC:\Firebird\Firebird_2_1\lib\ -lfbclient_ms
unix:!contains( LIBS, .*gds.* ):!contains( LIBS, .*libfb.* ):LIBS *= -lgds
win32:!contains( LIBS, .*gds.* ):!contains( LIBS, .*fbclient.* ) {
!win32-borland:LIBS *= fbclient_ms.lib
win32-borland:LIBS += gds32.lib
}
include(../qsqldriverbase.pri)


Zbuildil jsem ho tedy v Qt Creatoru. V projekt/debug jsem našel mezi jinými soubory qsqlibased4.dll a qsqlibased4.a. Dohromady s fbclient.dll jsem je nakopíroval k mému projektu a přes QSqlDatabase::open() jsem se úspěšně připojil do DB. Bohužel nemůžu přistoupit k datům přes QSqlQuery.exec(). Zatímco db.open() vrací true, QSqlQuery.exec() hlásí Driver not loaded. V logu Firebirdu mám winsock error INET/inet_error: read errno = 10054 (Ale to zcela jistě není problémem.) a podobnou NET/inet_error: connect errno = 10061.

citace:

class DatabaseFunctions
{
private:
// Connection settings
QSqlDatabase db;
QString HostName;
QString DatabaseName;
QString UserName;
QString Password;

// Query
QSqlQuery Query;
QString QueryS;

public:
DatabaseFunctions();
~DatabaseFunctions();
bool ConnectFB();
bool DatabaseFunctions::EditUserSettings(Player* Player_);
bool DatabaseFunctions::AddNewUser(Player* Player_);
};

DatabaseFunctions::DatabaseFunctions()
{
// Connection settings
HostName = "localhost";
DatabaseName = "C:/Users/HB/Documents/ChessOnline/Server/ChessOnlineServer/CHESSONLINE.FDB";
UserName = "*****";
Password = "*****";

db = QSqlDatabase::addDatabase("QIBASE");
}


bool DatabaseFunctions::ConnectFB()
{

db.setHostName(HostName);

db.setDatabaseName(DatabaseName);

db.setUserName(UserName);

db.setPassword(Password);


if (!db.open()) {

QMessageBox::critical(0, QObject::tr("Database error"),

db.lastError().text());

return false;

}


return true;

}


bool DatabaseFunctions::AddNewUser(Player* Player_)

{

QueryS = "LONG BORING SQL STATEMENT";

Query.exec(QueryS);

QueryS = Query.lastError().text();

if (!Query.isActive())

QMessageBox::warning(0, QObject::tr("Database Error"),

Query.lastError().text());

}



Nemá někdo nápad, kde by mohla být chyba? Mohl byste mi někdo poslat zkompilovaný driver pro Creator, jestli to třeba neni tím. Případně ještě tip na nějaký open-source Qt projekt využívající QIBase, kde bych porovnal přístup k DB.

Díky moc
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
devillante



Založen: 14. 08. 2007
Příspěvky: 164

PříspěvekZaslal: 11. září 2009, 16:51:03    Předmět: Odpovědět s citátem

Sám jsem vyřešil, aneb neznalost fungování QSqlDatabase a QSqlQuery.
Asi to mám. Z nějakého (mně divného) důvodu nelze QSqlQuery definovat v hlavičkovém souboru třídy. Nejspíš ta QSqlQuery musí mít naloadovaný driver dřív, než je nadefinovaná. Dohromady týden mého bídného života v čoudu při řešení této trapárny.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna