From 363260b05b3f6edb1a6a9e2244fd8c7b8c559652 Mon Sep 17 00:00:00 2001 From: Noldor Date: Tue, 17 Feb 2009 16:39:30 +0000 Subject: More work on objects module (w.i.p.) git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@3079 17fca916-40b9-46aa-a4ea-0a15b648b75c --- src/modules/objects/class_sql.cpp | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'src/modules/objects/class_sql.cpp') diff --git a/src/modules/objects/class_sql.cpp b/src/modules/objects/class_sql.cpp index 3cba363e0..acf36fbc1 100644 --- a/src/modules/objects/class_sql.cpp +++ b/src/modules/objects/class_sql.cpp @@ -103,6 +103,7 @@ KVSO_BEGIN_REGISTERCLASS(KviKvsObject_sql,"sql","object") KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,setConnection) KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,setCurrentQuery) + KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,tablesList) KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,currentQuery) KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,closeConnection) KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,queryInit) @@ -116,6 +117,7 @@ KVSO_BEGIN_REGISTERCLASS(KviKvsObject_sql,"sql","object") KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,queryLast) KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,queryFirst) KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,queryRecord) + KVSO_REGISTER_HANDLER_BY_NAME(KviKvsObject_sql,lastError) KVSO_END_REGISTERCLASS(KviKvsObject_sql) @@ -132,7 +134,7 @@ while (t.hasNext()) t.next(); QString szConnectionName=t.key(); connectionsDict.value(szConnectionName)->finish(); - delete connectionsDict.value(szConnectionName); + // delete connectionsDict.value(szConnectionName); QSqlDatabase::removeDatabase(szConnectionName); } connectionsDict.clear(); @@ -193,6 +195,29 @@ KVSO_CLASS_FUNCTION(sql,closeConnection) return true; } +KVSO_CLASS_FUNCTION(sql,tablesList) +{ + 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); + QStringList tables=db.tables(); + KviKvsArray *pArray=new KviKvsArray(); + for(int i=0;iset(i,new KviKvsVariant(tables.at(i))); + } + c->returnValue()->setArray(pArray); + return true; +} KVSO_CLASS_FUNCTION(sql,setCurrentQuery) { QString szConnectionName; @@ -289,7 +314,7 @@ KVSO_CLASS_FUNCTION(sql,queryBindValue) KVSO_PARAMETERS_END(c) QString szType; v->getTypeName(szType); - if (v->isString()) + if (v->isString()|| v->isNothing()) { QString szText; v->asString(szText); @@ -340,7 +365,7 @@ KVSO_CLASS_FUNCTION(sql,queryExec) KVSO_PARAMETERS_END(c) bool bOk; if (szQuery.isEmpty()) bOk=currentSQlQuery->exec(); - else bOk=currentSQlQuery->exec(szQuery); + else bOk=currentSQlQuery->exec(szQuery.toLatin1()); c->returnValue()->setBoolean(bOk); return true; } @@ -381,11 +406,9 @@ KVSO_CLASS_FUNCTION(sql,queryRecord) CHECK_QUERY_IS_INIT KviKvsHash *pHash=new KviKvsHash(); QSqlRecord record=currentSQlQuery->record(); - debug ("count %d",record.count()); for(int i=0;i