PDA

View Full Version : [QT /C++] QSqlQuery e tempo di esecuzione che raddoppia ogni volta


Wing_Zero
18-08-2010, 10:09
Ciao a tutti, sono 2 giorni che sto sbattendo la testa su questo problema...
Una volta completata la mia piccola applicazione sto buttando un occhio sulle prestazioni ed ho scoperto una cosa assurda: ogni volta che eseguo una query di INSERT / UPDATE il tempo aumenta in maniera lineare!

Andando in dettaglio, ho un semplice QSqlDatabase in QSQLITE:

db = QSqlDatabase::addDatabase(dbDriver);
db.setDatabaseName(dbPath + dbName);
db.open();
if(!db.isOpen())std::cerr << "db closed!";
QString query = "CREATE TABLE IF NOT EXISTS MovieDB ";
query += "('Code' varchar(255)...etc... )";
QSqlQuery queryResult= QSqlQuery(db); //db è un QSqlDatabase, variabile di istanza
queryResult.exec (query);
std::cerr << qPrintable(queryResult.lastError().text());

ogni volta che premendo un tasto ed effettuo questa operazioni di update:


QString query = "UPDATE...etc....";
QSqlQuery queryResult= QSqlQuery(db);
queryResult.exec (query);
std::cerr << qPrintable(queryResult.lastError().text());

emit doneUp();
return true;

inpiego sempre piu' tempo: ad esempio la prima volta 0,5 secondi, poi la seconda volta che l'effettuo 1 secondo, poi 1,5 secondi...
Spegnendo e riaccendendo il programmino si resetta: inizia con 0.5 secondi...riclicco: 1,0 secondi...poi 1,5 secondi e così via...

Stesso problema per le query di update/insert mentre per le select nessun problema.

Ho già verificato che il lag dipende solo ed esclusivamente dall'esecuzioni delle query e non da altro codice.

Non so che fare...grazie anticipate a chi mi sa dare almeno qualche dritta...
EDIT: RISOLTO POTETE CHIUDERE. Mi era scappata una QObject::connect dentro ad un for che replicava x volte la query -.-"