1 #include "../../include/db/sqlite3db.h"
\r
4 #include <Poco/Logger.h>
\r
5 #include <Poco/PatternFormatter.h>
\r
6 #include <Poco/FileChannel.h>
\r
7 #include "../../include/stringfunctions.h"
\r
22 DB::DB(const std::string &filename)
\r
36 const bool DB::Close()
\r
41 while((st=sqlite3_next_stmt(m_db,0))!=0)
\r
43 sqlite3_finalize(st);
\r
46 m_lastresult=sqlite3_close(m_db);
\r
47 if(m_lastresult==SQLITE_OK)
\r
63 const bool DB::Execute(const std::string &sql)
\r
67 m_lastresult=sqlite3_exec(m_db,sql.c_str(),NULL,NULL,NULL);
\r
69 Poco::Logger::get("querylog").information("Execute : "+sql);
\r
71 if(m_lastresult==SQLITE_OK)
\r
86 const bool DB::ExecuteInsert(const std::string &sql, long &insertid)
\r
90 m_lastresult=sqlite3_exec(m_db,sql.c_str(),NULL,NULL,NULL);
\r
92 Poco::Logger::get("querylog").information("Execute Insert : "+sql);
\r
94 if(m_lastresult==SQLITE_OK)
\r
96 insertid=sqlite3_last_insert_rowid(m_db);
\r
110 const int DB::GetLastError(std::string &errormessage)
\r
114 int errcode=sqlite3_errcode(m_db);
\r
115 const char *errmsg=sqlite3_errmsg(m_db);
\r
118 errormessage=errmsg;
\r
128 void DB::Initialize()
\r
131 m_lastresult=SQLITE_OK;
\r
134 const bool DB::IsOpen()
\r
136 return m_db ? true : false;
\r
139 const bool DB::Open(const std::string &filename)
\r
145 if(IsOpen()==false)
\r
147 m_lastresult=sqlite3_open(filename.c_str(),&m_db);
\r
148 if(m_lastresult==SQLITE_OK)
\r
163 Statement DB::Prepare(const std::string &sql)
\r
167 sqlite3_stmt *statement=NULL;
\r
168 m_lastresult=sqlite3_prepare_v2(m_db,sql.c_str(),sql.size(),&statement,NULL);
\r
170 size_t temp=reinterpret_cast<size_t>(statement);
\r
171 std::string tempstr("");
\r
172 StringFunctions::Convert(temp,tempstr);
\r
173 Poco::Logger::get("querylog").information("Prepare : "+sql+" "+tempstr);
\r
175 if(m_lastresult==SQLITE_OK)
\r
177 return Statement(statement);
\r
181 return Statement();
\r
186 return Statement();
\r
190 Recordset DB::Query(const std::string &sql)
\r
196 m_lastresult=sqlite3_get_table(m_db,sql.c_str(),&rs,&rows,&cols,NULL);
\r
198 Poco::Logger::get("querylog").information("Query : "+sql);
\r
200 if(m_lastresult==SQLITE_OK)
\r
202 return Recordset(rs,rows,cols);
\r
206 sqlite3_free_table(rs);
\r
207 return Recordset();
\r
212 return Recordset();
\r
216 const int DB::SetBusyTimeout(const int ms)
\r
220 m_lastresult=sqlite3_busy_timeout(m_db,ms);
\r
221 return m_lastresult;
\r
225 return SQLITE_ERROR;
\r