[solved] QSqlQuery bindValue funktioniert nicht
Verfasst: 12. März 2008 15:46
Tagchen, ich hab hier ein Programm, dass mehrere SQLite3-Datenbanken verwendet. Im kompletten Programm hab ich Probleme mit bindValue, es funktioniert einfach nicht. Den Teil der Querys, die dynamische Parameter haben, hab ich schon auf QString ("*" ).arg(); umgestellt, aber so langsam wirds mir unheimlich. Folgendes Beispiel:Die Map enthaellt die Kategorien, m_tableName ist ein QString. Das ganze Resultiert in Folgender Ausgabe:Solange ich nciht mehr als eine einzige Datenbank benutze, funktionierts, eine einzelne Datenbank und nichts anderes als ne main()-Methode und schon funktionierts. Dabei ist es egal, welche DB ich wo einsetzt...
Code: Alles auswählen
qDebug() << categories;
foreach ( int id, categories.keys() )
{
qDebug() << id;
QSqlQuery apps ( db );
apps.prepare ( "SELECT id, category, name FROM \":table\" WHERE category = \":category\" ORDER BY name;" );
apps.bindValue ( ":table", m_tableName );
apps.bindValue ( ":category", id );
apps.exec();
if ( apps.lastError().isValid() )
{
qDebug() << apps.executedQuery() << "\n" << apps.lastError() << "\n" << apps.boundValues();
}
while ( apps.next() )
{
qDebug() << apps.value ( 0 ) << "\t" << apps.value ( 1 ) << "\t" << apps.value ( 2 );
}
}Code: Alles auswählen
QMap((1, "Mathe/Physik")(2, "Informatik"))
1
"SELECT id, category, name FROM "?" WHERE category = "?" ORDER BY name;"
QSqlError(-1, "Parameter count mismatch", "")
QMap((":category", QVariant(int, 1) ) ( ":table" , QVariant(QString, "programs") ) )
2
"SELECT id, category, name FROM "?" WHERE category = "?" ORDER BY name;"
QSqlError(-1, "Parameter count mismatch", "")
QMap((":category", QVariant(int, 2) ) ( ":table" , QVariant(QString, "programs") ) )