projects
/
fms.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
version 0.3.29
[fms.git]
/
src
/
db
/
sqlite3statement.cpp
diff --git
a/src/db/sqlite3statement.cpp
b/src/db/sqlite3statement.cpp
index
789afb1
..
7ef5e27
100644
(file)
--- a/
src/db/sqlite3statement.cpp
+++ b/
src/db/sqlite3statement.cpp
@@
-1,5
+1,13
@@
#include "../../include/db/sqlite3db/sqlite3statement.h"
\r
\r
#include "../../include/db/sqlite3db/sqlite3statement.h"
\r
\r
+#ifdef QUERY_LOG
\r
+#include <Poco/Logger.h>
\r
+#include <Poco/FormattingChannel.h>
\r
+#include <Poco/PatternFormatter.h>
\r
+#include <Poco/FileChannel.h>
\r
+#include "../../include/stringfunctions.h"
\r
+#endif
\r
+
\r
#ifdef XMEM
\r
#include <xmem.h>
\r
#endif
\r
#ifdef XMEM
\r
#include <xmem.h>
\r
#endif
\r
@@
-7,65
+15,40
@@
namespace SQLite3DB
\r
{
\r
\r
namespace SQLite3DB
\r
{
\r
\r
+Poco::FastMutex Statement::m_mutex;
\r
std::map<sqlite3_stmt *, long> Statement::m_statementcount;
\r
\r
std::map<sqlite3_stmt *, long> Statement::m_statementcount;
\r
\r
-Statement::Statement()
\r
+Statement::Statement()
:m_statement(0),m_parametercount(0),m_resultcolumncount(0),m_rowreturned(false),m_lastinsertrowid(-1)
\r
{
\r
{
\r
- m_statement=NULL;
\r
- m_parametercount=0;
\r
- m_resultcolumncount=0;
\r
- m_rowreturned=false;
\r
- m_lastinsertrowid=-1;
\r
+
\r
}
\r
\r
}
\r
\r
-Statement::Statement(sqlite3_stmt *statement)
\r
+Statement::Statement(sqlite3_stmt *statement)
:m_statement(statement),m_rowreturned(false),m_lastinsertrowid(-1)
\r
{
\r
{
\r
- m_statement=statement;
\r
m_parametercount=sqlite3_bind_parameter_count(m_statement);
\r
m_resultcolumncount=sqlite3_column_count(m_statement);
\r
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
+
\r
if(m_statement)
\r
{
\r
if(m_statement)
\r
{
\r
+ Poco::ScopedLock<Poco::FastMutex> g(m_mutex);
\r
m_statementcount[m_statement]++;
\r
}
\r
}
\r
\r
m_statementcount[m_statement]++;
\r
}
\r
}
\r
\r
-Statement::Statement(const Statement &rhs)
\r
+Statement::Statement(const Statement &rhs)
:m_statement(0),m_parametercount(0),m_resultcolumncount(0),m_rowreturned(false),m_lastinsertrowid(-1)
\r
{
\r
{
\r
- m_statement=NULL;
\r
- m_parametercount=0;
\r
- m_resultcolumncount=0;
\r
- m_rowreturned=false;
\r
- m_lastinsertrowid=-1;
\r
*this=rhs;
\r
}
\r
\r
Statement::~Statement()
\r
{
\r
*this=rhs;
\r
}
\r
\r
Statement::~Statement()
\r
{
\r
-
\r
Finalize();
\r
Finalize();
\r
-
\r
- /*
\r
- std::vector<char *>::iterator i;
\r
- for(i=textptrs.begin(); i!=textptrs.end(); i++)
\r
- {
\r
- if((*i))
\r
- {
\r
- 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
}
\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
- //PThread::Guard g(DB::Instance()->m_mutex);
\r
if(sqlite3_bind_null(m_statement,column+1)==SQLITE_OK)
\r
{
\r
return true;
\r
if(sqlite3_bind_null(m_statement,column+1)==SQLITE_OK)
\r
{
\r
return true;
\r
@@
-85,8
+68,6
@@
const bool Statement::Bind(const int column, const int value)
{
\r
if(Valid() && column>=0 && column<m_parametercount)
\r
{
\r
{
\r
if(Valid() && column>=0 && column<m_parametercount)
\r
{
\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
if(sqlite3_bind_int(m_statement,column+1,value)==SQLITE_OK)
\r
{
\r
return true;
\r
@@
-106,8
+87,6
@@
const bool Statement::Bind(const int column, const double value)
{
\r
if(Valid() && column>=0 && column<m_parametercount)
\r
{
\r
{
\r
if(Valid() && column>=0 && column<m_parametercount)
\r
{
\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
if(sqlite3_bind_double(m_statement,column+1,value)==SQLITE_OK)
\r
{
\r
return true;
\r
@@
-127,8
+106,6
@@
const bool Statement::Bind(const int column, const std::string &value)
{
\r
if(Valid() && column>=0 && column<m_parametercount)
\r
{
\r
{
\r
if(Valid() && column>=0 && column<m_parametercount)
\r
{
\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
if(sqlite3_bind_text(m_statement,column+1,value.c_str(),value.size(),SQLITE_TRANSIENT)==SQLITE_OK)
\r
{
\r
return true;
\r
@@
-148,8
+125,6
@@
const bool Statement::Bind(const int column, const void *data, const int length)
{
\r
if(Valid() && column>=0 && column<m_parametercount)
\r
{
\r
{
\r
if(Valid() && column>=0 && column<m_parametercount)
\r
{
\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
if(sqlite3_bind_blob(m_statement,column+1,data,length,SQLITE_TRANSIENT)==SQLITE_OK)
\r
{
\r
return true;
\r
@@
-169,7
+144,7
@@
void Statement::Finalize()
{
\r
if(m_statement)
\r
{
\r
{
\r
if(m_statement)
\r
{
\r
- Poco::ScopedLock<Poco::FastMutex> g(
DB::Instance()->
m_mutex);
\r
+ Poco::ScopedLock<Poco::FastMutex> g(m_mutex);
\r
m_statementcount[m_statement]--;
\r
if(m_statementcount[m_statement]<=0)
\r
{
\r
m_statementcount[m_statement]--;
\r
if(m_statementcount[m_statement]<=0)
\r
{
\r
@@
-190,10
+165,11
@@
Statement &Statement::operator=(const Statement &rhs)
m_parametercount=rhs.m_parametercount;
\r
m_resultcolumncount=rhs.m_resultcolumncount;
\r
m_rowreturned=rhs.m_rowreturned;
\r
m_parametercount=rhs.m_parametercount;
\r
m_resultcolumncount=rhs.m_resultcolumncount;
\r
m_rowreturned=rhs.m_rowreturned;
\r
+ m_lastinsertrowid=rhs.m_lastinsertrowid;
\r
\r
if(m_statement)
\r
{
\r
\r
if(m_statement)
\r
{
\r
- Poco::ScopedLock<Poco::FastMutex> g(
DB::Instance()->
m_mutex);
\r
+ Poco::ScopedLock<Poco::FastMutex> g(m_mutex);
\r
m_statementcount[m_statement]++;
\r
}
\r
}
\r
m_statementcount[m_statement]++;
\r
}
\r
}
\r
@@
-204,7
+180,6
@@
const bool Statement::Reset()
{
\r
if(Valid())
\r
{
\r
{
\r
if(Valid())
\r
{
\r
- Poco::ScopedLock<Poco::FastMutex> g(DB::Instance()->m_mutex);
\r
if(sqlite3_reset(m_statement)==SQLITE_OK)
\r
{
\r
return true;
\r
if(sqlite3_reset(m_statement)==SQLITE_OK)
\r
{
\r
return true;
\r
@@
-321,8
+296,13
@@
const bool Statement::Step(const bool saveinsertrowid)
m_rowreturned=false;
\r
if(Valid())
\r
{
\r
m_rowreturned=false;
\r
if(Valid())
\r
{
\r
- Poco::ScopedLock<Poco::FastMutex> g(DB::Instance()->m_mutex);
\r
int result=sqlite3_step(m_statement);
\r
int result=sqlite3_step(m_statement);
\r
+#ifdef QUERY_LOG
\r
+ size_t temp=reinterpret_cast<size_t>(m_statement);
\r
+ std::string tempstr("");
\r
+ StringFunctions::Convert(temp,tempstr);
\r
+ Poco::Logger::get("querylog").information("Step : "+tempstr);
\r
+#endif
\r
if(result==SQLITE_OK || result==SQLITE_ROW || result==SQLITE_DONE)
\r
{
\r
if(result==SQLITE_ROW)
\r
if(result==SQLITE_OK || result==SQLITE_ROW || result==SQLITE_DONE)
\r
{
\r
if(result==SQLITE_ROW)
\r
@@
-331,7
+311,7
@@
const bool Statement::Step(const bool saveinsertrowid)
}
\r
if(saveinsertrowid)
\r
{
\r
}
\r
if(saveinsertrowid)
\r
{
\r
- m_lastinsertrowid=sqlite3_last_insert_rowid(
DB::Instance()->GetDB(
));
\r
+ m_lastinsertrowid=sqlite3_last_insert_rowid(
sqlite3_db_handle(m_statement
));
\r
}
\r
return true;
\r
}
\r
}
\r
return true;
\r
}
\r
@@
-348,7
+328,6
@@
const bool Statement::Step(const bool saveinsertrowid)
\r
const bool Statement::Valid()
\r
{
\r
\r
const bool Statement::Valid()
\r
{
\r
- Poco::ScopedLock<Poco::FastMutex> g(DB::Instance()->m_mutex);
\r
return m_statement ? true : false ;
\r
}
\r
\r
return m_statement ? true : false ;
\r
}
\r
\r