Hallo ich habe ein kleines Problem:
Ich habe einen Hauptthread und einen Nebenthread.
Der Hauptthread erzeugt (im Konsturktor) mit
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
db.open();
eine Verbindung
Danach wird der Nebenthread gestartet, der sich mit
QSqlDatabase db=QSqlDatabase::database("");
db.open();
eine weitere Verbindung holt und dann die Tabellen und Daten erzeugt.
Wenn ich allerdings im Hauptthread nachschaue, existiert keine Tablle und keine eingetragenen Dateien.
[gelöst] SQL und Threads
-
Russel-Athletic
- Beiträge: 3
- Registriert: 30. März 2007 19:50
[gelöst] SQL und Threads
Zuletzt geändert von Russel-Athletic am 1. April 2007 13:16, insgesamt 1-mal geändert.
Re: SQL und Threads
Wenn du mehrere connection zu db machen moechtest dann must du den namen der connection angeben....Russel-Athletic hat geschrieben:Hallo ich habe ein kleines Problem:
Ich habe einen Hauptthread und einen Nebenthread.
Der Hauptthread erzeugt (im Konsturktor) mit
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
db.open();
eine Verbindung
Danach wird der Nebenthread gestartet, der sich mit
QSqlDatabase db=QSqlDatabase::database("");
db.open();
eine weitere Verbindung holt und dann die Tabellen und Daten erzeugt.
Wenn ich allerdings im Hauptthread nachschaue, existiert keine Tablle und keine eingetragenen Dateien.
Code: Alles auswählen
int connectionsumm = 1;
connectionsumm++;
/* #############db connect 0 ###############################################################################*/
/* select & update ! */
db_0 = QSqlDatabase::addDatabase("QMYSQL",QString("LanConnection_%1").arg(connectionsumm)); /* QMYSQL */
db_0.setHostName(OneVar["dbhost1"]);
db_0.setDatabaseName(OneVar["dbbase1"]);
db_0.setUserName(OneVar["dbuser1"]);
db_0.setPassword(OneVar["dbpass1"]); /* OneVar["LIMITSQL"] */
db_0.open();
connectionsumm++;
/* only sincro && update ! */
db_1 = QSqlDatabase::addDatabase("QMYSQL",QString("WebConnection_%1").arg(connectionsumm)); /* QMYSQL */
db_1.setHostName(OneVar["dbhost2"]);
db_1.setDatabaseName(OneVar["dbbase2"]);
db_1.setUserName(OneVar["dbuser2"]);
db_1.setPassword(OneVar["dbpass2"]); /* OneVar["LIMITSQL"] */
db_1.open();
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt
-
Russel-Athletic
- Beiträge: 3
- Registriert: 30. März 2007 19:50
ganz einfach ich verbinde mit 2 db gleichzeitig und die update gehen auf beide und die select wo es am schnellesten geht.... vom intranet ....Russel-Athletic hat geschrieben:Laut der Dokumentation nicht, da sonst immer defaultConnection genommen wird.
Und selbst mit mehreren Namen hab ich es schon ausprobiert.
Was du mir mit dem Code sagen willst, verstehe ich nicht ganz.
wobei ich dann bei jede query die db connection angeben muss.....
Code: Alles auswählen
QSqlQuery query1(db_0);
funo = query1.exec(querzsqlxx);
QSqlDatabase db=QSqlDatabase::database("");
db.open();
und wenn du mit dem gleichen damen eine neue connection oeffnest ...
QSqlDatabase db dann loeschst du ja die erste...
Du solltest an die andere class oder thread den ( QSqlDatabase db ) mitgeben... so dass alle class darauf schreiben e lesen koennen...
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt