mirror of
https://github.com/Kiritow/MiniEngine.git
synced 2024-03-22 13:11:22 +08:00
107 lines
1.9 KiB
C++
107 lines
1.9 KiB
C++
#include "MiniEngine_SQLite.h"
|
|
#include <cstring>
|
|
#include <cstdio>
|
|
|
|
namespace MiniEngine
|
|
{
|
|
|
|
namespace SQL
|
|
{
|
|
|
|
// private
|
|
void SQLStatement::_set(sqlite3_stmt* p)
|
|
{
|
|
_st.reset(p,sqlite3_finalize);
|
|
}
|
|
|
|
// private
|
|
sqlite3_stmt* SQLStatement::_get() const
|
|
{
|
|
return _st.get();
|
|
}
|
|
|
|
void SQLStatement::_setStmt(sqlite3_stmt* p)
|
|
{
|
|
_set(p);
|
|
}
|
|
|
|
sqlite3_stmt* SQLStatement::_getStmt() const
|
|
{
|
|
return _get();
|
|
}
|
|
|
|
bool SQLStatement::isReady() const
|
|
{
|
|
return _get()!=nullptr;
|
|
}
|
|
|
|
|
|
int _global_sqldb_executor(void* ExParam,int colNum,char** colVal,char** colName)
|
|
{
|
|
auto p=reinterpret_cast<std::function<int(int,char**,char**)>*>(ExParam);
|
|
return (*p)(colNum,colVal,colName);
|
|
}
|
|
|
|
|
|
void SQLDB::_set(sqlite3* p)
|
|
{
|
|
_db.reset(p,sqlite3_close);
|
|
}
|
|
|
|
sqlite3* SQLDB::_get()
|
|
{
|
|
return _db.get();
|
|
}
|
|
|
|
int SQLDB::open(const std::string& filename)
|
|
{
|
|
sqlite3* _temp=nullptr;
|
|
int ret=sqlite3_open(filename.c_str(),&_temp);
|
|
_set(_temp);
|
|
return ret;
|
|
}
|
|
|
|
SQLStatement SQLDB::prepare(const std::string& SQLCommand)
|
|
{
|
|
SQLStatement stmt;
|
|
sqlite3_stmt* pstmt=nullptr;
|
|
int ret=sqlite3_prepare(_get(),SQLCommand.c_str(),SQLCommand.size(),&pstmt,NULL);
|
|
if(ret<0) return stmt;
|
|
stmt._setStmt(pstmt);
|
|
return stmt;
|
|
}
|
|
|
|
int SQLDB::step(const SQLStatement& Statement)
|
|
{
|
|
return sqlite3_step(Statement._getStmt());
|
|
}
|
|
|
|
int SQLDB::exec(const std::string& SQLCommand)
|
|
{
|
|
return _exec_real(SQLCommand,nullptr,nullptr);
|
|
}
|
|
|
|
int SQLDB::exec_raw(const std::string& SQLCommand,SQLCallback callback,void* param)
|
|
{
|
|
return _exec_real(SQLCommand,callback,param);
|
|
}
|
|
|
|
int SQLDB::_exec_real(const std::string& SQLCommand,SQLCallback callback,void* param)
|
|
{
|
|
return sqlite3_exec(_get(),SQLCommand.c_str(),callback,param,&_errmsg);
|
|
}
|
|
|
|
const char* SQLDB::getErrorMsg()
|
|
{
|
|
return _errmsg;
|
|
}
|
|
|
|
void SQLDB::clearError()
|
|
{
|
|
_errmsg=nullptr;
|
|
}
|
|
|
|
}/// End of namespace MiniEngine::SQL
|
|
|
|
}/// End of namespace MiniEngine
|