Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
devillante
Založen: 14. 08. 2007 Příspěvky: 164
|
Zaslal: 11. září 2009, 11:03:58 Předmět: FireBird driver - Qt |
|
|
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 |
|
 |
devillante
Založen: 14. 08. 2007 Příspěvky: 164
|
Zaslal: 11. září 2009, 16:51:03 Předmět: |
|
|
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 |
|
 |
|
|
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