QSqlDatabase und Multithreading
Verfasst: 7. August 2009 16:15
Hallo,
ich weiß das das Thema schon öfter behandelt wurde. Aber irgendwie konnte ich die Information die ich gerne hätte nicht finden. Ich stelle mir folgende Klasse vor:
Dieses Grundgerüst wird am Anfang des Programmes mit dem CTR mit den beiden parametern aufgerufen und somit ein Connection erstellt. Ich stelle mir dann vor das diese Klasse später im Programm und auch in anderen Threads immer wieder ohne Parameter konstruiert wird. Ist das ein denkbares und korrrektes Vorgehen?
Viele Grüße,
Willi
ich weiß das das Thema schon öfter behandelt wurde. Aber irgendwie konnte ich die Information die ich gerne hätte nicht finden. Ich stelle mir folgende Klasse vor:
Code: Alles auswählen
QAtomicInt SQLClass::reference = QAtomicInt(0);
QString SQLClass::cConnectionName = "ConnectionName";
SQLClass::SQLClass()
{
SQLClass::reference.ref();
QSqlDatabase::database(SQLClass::cConnectionName, false).open();
}
SQLClass::SQLClass(const IniFile& iniFile, const QString& cSection)
{
SQLClass::reference.ref();
if (!QSqlDatabase::database(SQLClass::cConnectionName, false).isValid()) {
QSqlDatabase database = QSqlDatabase::addDatabase("QODBC", SQLClass::cConnectionName);
QString server = iniFile.getString(cSection,"SERVER");
database.setDatabaseName("DRIVER=" + iniFile.getString(cSection,"DRIVER") + ";DATABASE=" + iniFile.getString(cSection,"DATABASE") + ";SERVER=" + server);
database.setHostName(server);
database.setUserName(iniFile.getString(cSection,"USER","",true));
database.setPassword(iniFile.getString(cSection,"PASS","",true));
SQLClass::nLog = iniFile.getString(cSection,"LOG","0").toInt(NULL);
} else {
log("Init of SQLDatabase was wrong",1);
}
QSqlDatabase::database(SQLClass::cConnectionName, false).open();
}
SQLClass::~SQLClass()
{
QSqlDatabase::database(SQLClass::cConnectionName, false).close();
if (!SQLClass::reference.deref()) {
QSqlDatabase::removeDatabase(SQLClass::cConnectionName);
} else {
}
}
bool SQLClass::execute(const QString& cStmt) {
.
.
.
.
return lResult;
}Viele Grüße,
Willi