diff options
| author | 2009-02-27 18:46:22 +0000 | |
|---|---|---|
| committer | 2009-02-27 18:46:22 +0000 | |
| commit | 46727010a2df7d2d6f9e046b0bfc899e82a1ec6d (patch) | |
| tree | 6cf26913c3465f9841a3f85e893b37adc935f439 /src/modules | |
| parent | compilation fix for previous commit (diff) | |
| download | KVIrc-46727010a2df7d2d6f9e046b0bfc899e82a1ec6d.tar.gz KVIrc-46727010a2df7d2d6f9e046b0bfc899e82a1ec6d.tar.bz2 KVIrc-46727010a2df7d2d6f9e046b0bfc899e82a1ec6d.zip | |
Added transaction in sql class
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@3106 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/objects/class_sql.cpp | 46 | ||||
| -rw-r--r-- | src/modules/objects/class_sql.h | 2 |
2 files changed, 45 insertions, 3 deletions
diff --git a/src/modules/objects/class_sql.cpp b/src/modules/objects/class_sql.cpp index 156e400d6..01629499d 100644 --- a/src/modules/objects/class_sql.cpp +++ b/src/modules/objects/class_sql.cpp @@ -36,18 +36,18 @@ static KviPointerList <KviKvsObject_sql> sql_instances; static bool checkDuplicatedConnection(QString &szConnectionName) { if(!sql_instances.count()) return false; - bool found=false; + bool bFound=false; for(KviKvsObject_sql *i = sql_instances.first(); i; i = sql_instances.next()) { QSqlQuery *q=i->getQueryConnectionsDict().value(szConnectionName); if (q) { i->closeQueryConnection(q); - found=true; + bFound=true; break; } } - return found; + return bFound; }; static void KviKvsSqlInstanceRegister(KviKvsObject_sql *instance) { @@ -89,6 +89,10 @@ static void KviKvsSqlInstanceUnregister(KviKvsObject_sql *instance) Returns as array the database tables list. !fn: $queryInit(<connection_name:string>) Initialize the query for the database <connection_name> which has to be already connected. + !fn: $transaction() + Begin a transaction. + !fn: $commit() + Commit the transaction. !fn: $setCurrentQuery(<connection_name:string>) Sets the query for the database connection <connection_name> , which has to be already connected, as current query. !fn: <connection_name:string> $currentQuery() @@ -132,6 +136,8 @@ static void KviKvsSqlInstanceUnregister(KviKvsObject_sql *instance) KVSO_BEGIN_REGISTERCLASS(KviKvsObject_sql,"sql","object") + KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,commit) + KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,beginTransaction) KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,setConnection) KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,setCurrentQuery) KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,tablesList) @@ -208,6 +214,40 @@ KVSO_CLASS_FUNCTION(sql,setConnection) c->returnValue()->setBoolean(db.open()); return true; } +KVSO_CLASS_FUNCTION(sql,beginTransaction) +{ + QString szConnectionName; + KVSO_PARAMETERS_BEGIN(c) + KVSO_PARAMETER("connectionName",KVS_PT_STRING,0,szConnectionName) + KVSO_PARAMETERS_END(c) + + QStringList connections = QSqlDatabase::connectionNames(); + if (!connections.contains(szConnectionName)) + { + c->warning(__tr2qs_ctx("Connection %Q does not exists","objects"),&szConnectionName); + return true; + } + QSqlDatabase db=QSqlDatabase::database(szConnectionName); + db.transaction(); + return true; +} +KVSO_CLASS_FUNCTION(sql,commit) +{ + QString szConnectionName; + KVSO_PARAMETERS_BEGIN(c) + KVSO_PARAMETER("connectionName",KVS_PT_STRING,0,szConnectionName) + KVSO_PARAMETERS_END(c) + + QStringList connections = QSqlDatabase::connectionNames(); + if (!connections.contains(szConnectionName)) + { + c->warning(__tr2qs_ctx("Connection %Q does not exists","objects"),&szConnectionName); + return true; + } + QSqlDatabase db=QSqlDatabase::database(szConnectionName); + db.commit(); + return true; +} KVSO_CLASS_FUNCTION(sql,closeConnection) { QString szConnectionName; diff --git a/src/modules/objects/class_sql.h b/src/modules/objects/class_sql.h index a47862afc..7c8168c3f 100644 --- a/src/modules/objects/class_sql.h +++ b/src/modules/objects/class_sql.h @@ -50,6 +50,8 @@ protected: }; bool setConnection(KviKvsObjectFunctionCall *c); bool tablesList(KviKvsObjectFunctionCall *c); + bool beginTransaction(KviKvsObjectFunctionCall *c); + bool commit(KviKvsObjectFunctionCall *c); bool queryResultsSize(KviKvsObjectFunctionCall *c); bool queryNext(KviKvsObjectFunctionCall *c); |
