aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/objects/class_sql.cpp
diff options
context:
space:
mode:
authorGravatar Noldor2009-02-17 16:39:30 +0000
committerGravatar Noldor2009-02-17 16:39:30 +0000
commit363260b05b3f6edb1a6a9e2244fd8c7b8c559652 (patch)
tree70258362129d962852b4f9b8a25ae26ded004c1c /src/modules/objects/class_sql.cpp
parentfix for #368 (diff)
downloadKVIrc-363260b05b3f6edb1a6a9e2244fd8c7b8c559652.tar.gz
KVIrc-363260b05b3f6edb1a6a9e2244fd8c7b8c559652.tar.bz2
KVIrc-363260b05b3f6edb1a6a9e2244fd8c7b8c559652.zip
More work on objects module (w.i.p.)
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@3079 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/objects/class_sql.cpp')
-rw-r--r--src/modules/objects/class_sql.cpp33
1 files changed, 28 insertions, 5 deletions
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;i<tables.count();i++)
+ {
+ pArray->set(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<record.count();i++)
{
KviKvsVariant *pValue=0;
- debug ("type %s",record.value(i).typeName());
QVariant value=record.value(i);
if (value.type()==QVariant::LongLong) pValue=new KviKvsVariant((kvs_int_t) value.toLongLong());
else if (value.type()==QVariant::String) pValue=new KviKvsVariant(value.toString());