1 #include "../../include/db/sqlite3db.h"
\r
15 DB::DB(std::string filename)
\r
29 const bool DB::Close()
\r
33 ZThread::Guard<ZThread::Mutex> g(m_mutex);
\r
34 m_lastresult=sqlite3_close(m_db);
\r
35 if(m_lastresult==SQLITE_OK)
\r
51 const bool DB::Execute(const std::string &sql)
\r
55 ZThread::Guard<ZThread::Mutex> g(m_mutex);
\r
56 m_lastresult=sqlite3_exec(m_db,sql.c_str(),NULL,NULL,NULL);
\r
57 if(m_lastresult==SQLITE_OK)
\r
72 const bool DB::ExecuteInsert(const std::string &sql, long &insertid)
\r
76 ZThread::Guard<ZThread::Mutex> g(m_mutex);
\r
77 m_lastresult=sqlite3_exec(m_db,sql.c_str(),NULL,NULL,NULL);
\r
78 if(m_lastresult==SQLITE_OK)
\r
80 insertid=sqlite3_last_insert_rowid(m_db);
\r
94 const int DB::GetLastError(std::string &errormessage)
\r
98 ZThread::Guard<ZThread::Mutex> g(m_mutex);
\r
99 int errcode=sqlite3_errcode(m_db);
\r
100 const char *errmsg=sqlite3_errmsg(m_db);
\r
103 errormessage=errmsg;
\r
113 void DB::Initialize()
\r
116 m_lastresult=SQLITE_OK;
\r
119 const bool DB::IsOpen()
\r
121 ZThread::Guard<ZThread::Mutex> g(m_mutex);
\r
122 return m_db ? true : false;
\r
125 const bool DB::Open(const std::string &filename)
\r
127 if(IsOpen()==false)
\r
131 if(IsOpen()==false)
\r
133 ZThread::Guard<ZThread::Mutex> g(m_mutex);
\r
134 m_lastresult=sqlite3_open(filename.c_str(),&m_db);
\r
135 if(m_lastresult==SQLITE_OK)
\r
150 Statement DB::Prepare(const std::string &sql)
\r
154 ZThread::Guard<ZThread::Mutex> g(m_mutex);
\r
155 sqlite3_stmt *statement=NULL;
\r
156 m_lastresult=sqlite3_prepare_v2(m_db,sql.c_str(),sql.size(),&statement,NULL);
\r
157 if(m_lastresult==SQLITE_OK)
\r
159 return Statement(statement);
\r
163 return Statement();
\r
168 return Statement();
\r
172 Recordset DB::Query(const std::string &sql)
\r
176 ZThread::Guard<ZThread::Mutex> g(m_mutex);
\r
179 m_lastresult=sqlite3_get_table(m_db,sql.c_str(),&rs,&rows,&cols,NULL);
\r
180 if(m_lastresult==SQLITE_OK)
\r
182 return Recordset(rs,rows,cols);
\r
186 sqlite3_free_table(rs);
\r
187 return Recordset();
\r
192 return Recordset();
\r
196 const int DB::SetBusyTimeout(const int ms)
\r
200 ZThread::Guard<ZThread::Mutex> g(m_mutex);
\r
201 m_lastresult=sqlite3_busy_timeout(m_db,ms);
\r
202 return m_lastresult;
\r