Alles rund um die Programmierung mit Qt
sooofunky
Beiträge: 31 Registriert: 4. Mai 2011 11:48
Beitrag
von sooofunky » 22. Juli 2011 14:34
Hallo,
den Datenbank Name, Benutzer, Passwort habe ich vorher gesetzt und möchte jetzt in 3-4 Threads Abfragen tätigen. Im Beispiel unten ist der Connection Name "thread1". Wenn ich jetzt den Thread starte kann ich zwar die db öffnen aber nicht query erstellen. Ich weiss, dass jeder Thread eine eigene Verbindung braucht und Connection Name. Ich bitte um Hilfe.
Code: Alles auswählen
void RenderThread::run()
{
QSqlDatabase db = QSqlDatabase::database("thread1");
// QSqlDatabase db = QSqlDatabase::cloneDatabase(QSqlDatabase::database("QMYSQL", "thread1"), "thread2");
if (db.open())
{
QSqlQuery query(db);
query.prepare(m_str);
if(query.exec() && query.first())
{
while (query.next())
{
qDebug() << query.value(0).toDateTime().toString();
}
}
query.finish();
}
db.close();
}
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 22. Juli 2011 14:45
Und wo öffnest Du die DB-Connection "thread1" ?
Und was ist mit "query erstellen" gemeint??
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
sooofunky
Beiträge: 31 Registriert: 4. Mai 2011 11:48
Beitrag
von sooofunky » 22. Juli 2011 15:05
mit "query erstellen" habe ich "QSqlQuery query(db)" gemeint - edit: eigentlich das query.exec()
db wird im Haupthread konfiguriert. Öffnen tue ich sie nicht.
Code: Alles auswählen
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "thread1");
db.setHostName("127.0.0.1");
db.setDatabaseName("myDB");
db.setUserName("user1");
db.setPassword("1234");
solarix
Beiträge: 1133 Registriert: 7. Juni 2007 19:25
Beitrag
von solarix » 22. Juli 2011 16:27
Naja.. also in der Doku steht nicht "öffnen", sondern "created":
Ich gehe davon aus, dass genau das
Code: Alles auswählen
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "thread1");
damit gemeint ist...