sabato 8 ottobre 2011

Query in QtSQL

Ho appena perso un paio di giorni cercando di effettuare una semplice query su un database utilizzando le ottime librerie Qt, nello specifico il modulo QtSQL. Il codice in questione è il seguente:


QSqlQuery query;
query.prepare("SELECT id FROM ':tableName' WHERE name=':recordName'");
query.bindValue(":tableName", tableName);
query.bindValue(":recordName", recordName);
query.exec();

Simpaticamente la query ritornava sempre lo stesso errore:

query error:  Parameter count mismatch 

In sintesi, NON è possibile effettuare il bindValue del nome della table su cui vogliamo effettuare la query.

A questo punto le soluzioni sono due, possiamo arrenderci e scolpire il nome della table nella stringa:

query.prepare("SELECT id FROM nations WHERE name=':recordName'");

oppure raggirare il prepare inserendo il nome della tabella come QString ed effettuare il bind solo del parametro che ci interessa:

query.prepare("SELECT id FROM '"+tableName+"' WHERE name=':recordName'");

Read more...

About This Blog

  © Blogger template PingooIgloo by Ourblogtemplates.com 2009

Back to TOP