version 0.1.10
[fms.git] / src / db / sqlite3statement.cpp
index 39c699f..81df27a 100644 (file)
@@ -15,6 +15,7 @@ Statement::Statement()
        m_parametercount=0;\r
        m_resultcolumncount=0;\r
        m_rowreturned=false;\r
+       m_lastinsertrowid=-1;\r
 }\r
 \r
 Statement::Statement(sqlite3_stmt *statement)\r
@@ -23,6 +24,7 @@ Statement::Statement(sqlite3_stmt *statement)
        m_parametercount=sqlite3_bind_parameter_count(m_statement);\r
        m_resultcolumncount=sqlite3_column_count(m_statement);\r
        m_rowreturned=false;\r
+       m_lastinsertrowid=-1;\r
        \r
        if(m_statement)\r
        {\r
@@ -36,6 +38,7 @@ Statement::Statement(const Statement &rhs)
        m_parametercount=0;\r
        m_resultcolumncount=0;\r
        m_rowreturned=false;\r
+       m_lastinsertrowid=-1;\r
        *this=rhs;\r
 }\r
 \r
@@ -44,6 +47,7 @@ Statement::~Statement()
        \r
        Finalize();\r
        \r
+       /*\r
        std::vector<char *>::iterator i;\r
        for(i=textptrs.begin(); i!=textptrs.end(); i++)\r
        {\r
@@ -52,13 +56,16 @@ Statement::~Statement()
                        delete [] (*i);\r
                }\r
        }\r
+       */\r
+\r
 }\r
 \r
 const bool Statement::Bind(const int column)\r
 {\r
        if(Valid() && column>=0 && column<m_parametercount)\r
        {\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //PThread::Guard g(DB::Instance()->m_mutex);\r
                if(sqlite3_bind_null(m_statement,column+1)==SQLITE_OK)\r
                {\r
                        return true;\r
@@ -78,7 +85,8 @@ const bool Statement::Bind(const int column, const int value)
 {\r
        if(Valid() && column>=0 && column<m_parametercount)\r
        {\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //PThread::Guard g(DB::Instance()->m_mutex);\r
                if(sqlite3_bind_int(m_statement,column+1,value)==SQLITE_OK)\r
                {\r
                        return true;\r
@@ -98,7 +106,8 @@ const bool Statement::Bind(const int column, const double value)
 {\r
        if(Valid() && column>=0 && column<m_parametercount)\r
        {\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //PThread::Guard g(DB::Instance()->m_mutex);\r
                if(sqlite3_bind_double(m_statement,column+1,value)==SQLITE_OK)\r
                {\r
                        return true;\r
@@ -118,12 +127,9 @@ const bool Statement::Bind(const int column, const std::string &value)
 {\r
        if(Valid() && column>=0 && column<m_parametercount)\r
        {\r
-               char *text=new char[value.size()+1];\r
-               strncpy(text,value.c_str(),value.size());\r
-               text[value.size()]=NULL;\r
-               textptrs.push_back(text);\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
-               if(sqlite3_bind_text(m_statement,column+1,text,value.size(),NULL)==SQLITE_OK)\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //PThread::Guard g(DB::Instance()->m_mutex);\r
+               if(sqlite3_bind_text(m_statement,column+1,value.c_str(),value.size(),SQLITE_TRANSIENT)==SQLITE_OK)\r
                {\r
                        return true;\r
                }\r
@@ -142,8 +148,9 @@ const bool Statement::Bind(const int column, const void *data, const int length)
 {\r
        if(Valid() && column>=0 && column<m_parametercount)\r
        {\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
-               if(sqlite3_bind_blob(m_statement,column+1,data,length,NULL)==SQLITE_OK)\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //PThread::Guard g(DB::Instance()->m_mutex);\r
+               if(sqlite3_bind_blob(m_statement,column+1,data,length,SQLITE_TRANSIENT)==SQLITE_OK)\r
                {\r
                        return true;\r
                }\r
@@ -162,7 +169,8 @@ void Statement::Finalize()
 {\r
        if(m_statement)\r
        {\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               PThread::Guard g(DB::Instance()->m_mutex);\r
                m_statementcount[m_statement]--;\r
                if(m_statementcount[m_statement]<=0)\r
                {\r
@@ -186,7 +194,8 @@ Statement &Statement::operator=(const Statement &rhs)
 \r
                if(m_statement)\r
                {\r
-                       ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+                       //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+                       PThread::Guard g(DB::Instance()->m_mutex);\r
                        m_statementcount[m_statement]++;\r
                }\r
        }\r
@@ -197,7 +206,8 @@ const bool Statement::Reset()
 {\r
        if(Valid())\r
        {\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               PThread::Guard g(DB::Instance()->m_mutex);\r
                if(sqlite3_reset(m_statement)==SQLITE_OK)\r
                {\r
                        return true;\r
@@ -217,7 +227,8 @@ const bool Statement::ResultBlob(const int column, void *data, int &length)
 {\r
        if(Valid() && column>=0 && column<m_resultcolumncount)\r
        {\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //PThread::Guard g(DB::Instance()->m_mutex);\r
                data=(void *)sqlite3_column_blob(m_statement,column);\r
                length=sqlite3_column_bytes(m_statement,column);\r
                return true;\r
@@ -232,7 +243,8 @@ const bool Statement::ResultDouble(const int column, double &result)
 {\r
        if(Valid() && column>=0 && column<m_resultcolumncount)\r
        {\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //PThread::Guard g(DB::Instance()->m_mutex);\r
                result=sqlite3_column_double(m_statement,column);\r
                return true;\r
        }\r
@@ -246,7 +258,8 @@ const bool Statement::ResultInt(const int column, int &result)
 {\r
        if(Valid() && column>=0 && column<m_resultcolumncount)\r
        {\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //PThread::Guard g(DB::Instance()->m_mutex);\r
                result=sqlite3_column_int(m_statement,column);\r
                return true;\r
        }\r
@@ -260,7 +273,8 @@ const bool Statement::ResultNull(const int column)
 {\r
        if(Valid() && column>=0 && column<m_resultcolumncount)\r
        {\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //PThread::Guard g(DB::Instance()->m_mutex);\r
                if(sqlite3_column_type(m_statement,column)==SQLITE_NULL)\r
                {\r
                        return true;\r
@@ -280,7 +294,8 @@ const bool Statement::ResultText(const int column, std::string &result)
 {\r
        if(Valid() && column>=0 && column<m_resultcolumncount)\r
        {\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //PThread::Guard g(DB::Instance()->m_mutex);\r
                const unsigned char *cresult=sqlite3_column_text(m_statement,column);\r
                if(cresult)\r
                {\r
@@ -303,7 +318,8 @@ const bool Statement::Step(const bool saveinsertrowid)
        m_rowreturned=false;\r
        if(Valid())\r
        {\r
-               ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+               PThread::Guard g(DB::Instance()->m_mutex);\r
                int result=sqlite3_step(m_statement);\r
                if(result==SQLITE_OK || result==SQLITE_ROW || result==SQLITE_DONE)\r
                {\r
@@ -313,7 +329,7 @@ const bool Statement::Step(const bool saveinsertrowid)
                        }\r
                        if(saveinsertrowid)\r
                        {\r
-                               m_lastinsertrowid=sqlite3_last_insert_rowid(DB::instance()->GetDB());\r
+                               m_lastinsertrowid=sqlite3_last_insert_rowid(DB::Instance()->GetDB());\r
                        }\r
                        return true;\r
                }\r
@@ -330,7 +346,8 @@ const bool Statement::Step(const bool saveinsertrowid)
 \r
 const bool Statement::Valid()\r
 {\r
-       ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+       //ZThread::Guard<ZThread::Mutex> g(DB::instance()->m_mutex);\r
+       PThread::Guard g(DB::Instance()->m_mutex);\r
        return m_statement ? true : false ;\r
 }\r
 \r