QSqlQuery liefert keine Ergebnisse
Verfasst: 16. April 2009 19:02
Hallo,
ich nutze zur Zeit Vista, VS2008 und Qt 4.5.
Ich habe eine SQLite Datenbank und öffne diese im Ctor einer Klasse die mir die Datenbankzugriffe kapseln soll. Das scheint auch erfolreich zu funktionieren und als Anzahl der Tabellen bekomme ich 69, wie gewünscht heraus.
Nur leider funktioniert meine Abfrage nicht. Hier erst mal ein wenig Code.
Die Abfrage in der Methode typeID sollte mir mindestens 1 Ergebniss liefern. Tut sie leider nicht.
Ich habe die Abfrage zur Kontrolle einmal in mein Mozilla SQLite Browser eingegeben und das richtige Ergebniss erhalten.
Es gibt auch keinen Fehlercode/text zurück. Offensichtlich ist Qt der Meinung das alles funktioniert hätte.
Zur Kontrolle wollte ich dann einfach mal ganz simpel den kompletten Table haben. Auch da wird mir kein Ergebniss geliefert.
Ich habe auch schon diverse ander sachen wie bindvalue usw. probiert. Haben natürlich nicht geholfen. ( sonst würde man das auch nicht lesen
)
Ich habe gerade getestet die Abfrage direkt im Ctor zu machen. Auch das klappt nicht.
Nun bin ich ehrlich gesagt ein wenig ratlos. Hat irgendjemand ähnliche Probleme gehabt, oder sieht etwas was ich falsch gemacht habe.
Viel Dank schon mal.
ich nutze zur Zeit Vista, VS2008 und Qt 4.5.
Ich habe eine SQLite Datenbank und öffne diese im Ctor einer Klasse die mir die Datenbankzugriffe kapseln soll. Das scheint auch erfolreich zu funktionieren und als Anzahl der Tabellen bekomme ich 69, wie gewünscht heraus.
Nur leider funktioniert meine Abfrage nicht. Hier erst mal ein wenig Code.
Code: Alles auswählen
EveDatabase::EveDatabase()
: mDatabase()
{
mDatabase = QSqlDatabase::addDatabase("QSQLITE");
mDatabase.setDatabaseName("D:/Development/Projekte/EVEAssistant/Database/eve.db");
mDatabase.setHostName("D:/Development/Projekte/EVEAssistant/Database/eve.db");
mDatabase.setPort(-1);
if( !mDatabase.isOpen() )
{
bool isOpen = mDatabase.open("","");
if( !isOpen )
{
QSqlError theError = mDatabase.lastError();
QString errorText = theError.text();
QMessageBox::critical(NULL, QObject::tr("Critical"), QObject::tr("Could not connect to database. Error: %1").arg(errorText));
}
// debug only
// QStringList tables = mDatabase.tables();
// const int tableCount = tables.count(); // is 69
}
}
EveDatabase::~EveDatabase()
{
mDatabase.close();
}
int EveDatabase::typeID( const QString & iName )
{
//const QString sql = QString("SELECT typeID FROM invTypes WHERE typeName LIKE '%1'").arg(iName);
const QString sql = QString("SELECT * FROM invTypes"); // debug only
QSqlQuery query = mDatabase.exec(sql);
QSqlQuery query(mDatabase);
const bool isSucceded = query.exec(sql);
if( isSucceded )
{
const int rowsAffected = query.numRowsAffected(); // 0
while( query.next() )
{
return query.value(0).toInt();
}
// hier solltest ich nicht landen
const QString executedQuery = query.executedQuery(); // "SELECT * FROM invTypes"
const QString lastError = query.lastError().text(); // ""
return -1;
}
else
{
// abfrage fehlgeschlagen
const QString executedQuery = query.executedQuery(); // "SELECT * FROM invTypes"
const QString lastError = query.lastError().text(); // ""
return -1;
}
}
Ich habe die Abfrage zur Kontrolle einmal in mein Mozilla SQLite Browser eingegeben und das richtige Ergebniss erhalten.
Es gibt auch keinen Fehlercode/text zurück. Offensichtlich ist Qt der Meinung das alles funktioniert hätte.
Zur Kontrolle wollte ich dann einfach mal ganz simpel den kompletten Table haben. Auch da wird mir kein Ergebniss geliefert.
Ich habe auch schon diverse ander sachen wie bindvalue usw. probiert. Haben natürlich nicht geholfen. ( sonst würde man das auch nicht lesen
Ich habe gerade getestet die Abfrage direkt im Ctor zu machen. Auch das klappt nicht.
Nun bin ich ehrlich gesagt ein wenig ratlos. Hat irgendjemand ähnliche Probleme gehabt, oder sieht etwas was ich falsch gemacht habe.
Viel Dank schon mal.