SQL Datenbanken und Threads
Verfasst: 4. März 2010 15:43
Hallo,
Ich habe eine SQL Datenbank:
Ich benutze QSQLTableModel um die Datenbank anzugen in einem Widget. über die Toolbar kann ich nun eine länger dauernde Aktion starten. Dabei starte ich einen neuen Thread:
Die Datenbank verbindung bleibt dabei aufrecht (weis auch nicht wie man sie trennen kann).
In dem Thread benutze ich die selbe Datenbank wieder und mache dor das Selbe:
Mit
db.transaction();
db.commit();
db.rollback();
und benutze dazwischen
QSqlQuery query;
if(query.exec("Insert....."))
beschleunige ich die Ganze Prozedur.
Der Debugger meldet:
Warning: QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
Warning: QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
Wie kann ich nun diese Datenbank in in dem einen und auch anderen Thread benutzen?
mfg acdc
[/quote]
Ich habe eine SQL Datenbank:
Code: Alles auswählen
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("database/DB1.db");
if (!db.open())
QMessageBox::critical(0,trUtf8("Datenbank kann nicht geöffnet werden"),"SQLITE", QMessageBox::Cancel);
Code: Alles auswählen
csvThread = new CSVtoDatabaseThread(db,&tableBrowserNormHeader,lieferantenConfListe,this);
connect(csvThread,SIGNAL(finished()),this,SLOT(threadReady()));
csvThread->start();
In dem Thread benutze ich die selbe Datenbank wieder und mache dor das Selbe:
Code: Alles auswählen
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("database/DB1.db");
if (!db.open())
QMessageBox::critical(0,trUtf8("Datenbank kann nicht geöffnet werden"),"SQLITE", QMessageBox::Cancel);
db.transaction();
db.commit();
db.rollback();
und benutze dazwischen
QSqlQuery query;
if(query.exec("Insert....."))
beschleunige ich die Ganze Prozedur.
Der Debugger meldet:
Warning: QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
Warning: QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
Wie kann ich nun diese Datenbank in in dem einen und auch anderen Thread benutzen?
mfg acdc
[/quote]