123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- #include "CSqlite3DBProc.h"
- //#include "CharsetPorc.h"
- #include "logproc.h"
- #include <QString>
- const std::string CSqlite3DBProc::m_sDBEncode = "Qmthoec!@#";
- const int CSqlite3DBProc::m_nDBEncodeKeyNum = 10;
- std::shared_ptr<CSqlite3DBProc> g_DBProcPtr = nullptr;
- std::shared_ptr<CSqlite3DBProc> g_sysDBProcPtr = nullptr;
- //#define MAX_COL_SIZE 10240000
- CSqlite3DBProc::CSqlite3DBProc()
- {
- m_pDB = NULL;
- m_bIsEof = false;
- }
- CSqlite3DBProc::~CSqlite3DBProc()
- {
- CloseBD();
- }
- bool CSqlite3DBProc::OpenDB(std::string sFile)
- {
- try
- {
- int res = sqlite3_open_v2(/*UTF8ToGBK*/(sFile.c_str())/*.c_str()*/, &m_pDB,
- SQLITE_OPEN_READWRITE | SQLITE_OPEN_FULLMUTEX, NULL);
- if(res != SQLITE_OK)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,")<< "Can't open database:" << sqlite3_errmsg(m_pDB);
- return false;
- }
- else
- {
- myServerLog()<< QString::fromLocal8Bit("数据库正常启动,")<<"open database successfully";
- }
- if(sqlite3_key(m_pDB, m_sDBEncode.c_str(), m_nDBEncodeKeyNum) != SQLITE_OK ||
- sqlite3_rekey(m_pDB, m_sDBEncode.c_str(), m_nDBEncodeKeyNum) != SQLITE_OK)
- {
- myServerLog()<< QString::fromLocal8Bit("数据库异常,")<<"Open database with key Error";
- return false;
- }
- return true;
- }
- catch(...)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,")<< "Open database error:" << sqlite3_errmsg(m_pDB);
- return false;
- }
- }
- bool CSqlite3DBProc::CloseBD()
- {
- try
- {
- sqlite3_close(m_pDB);
- return true;
- }
- catch(...)
- {
- myServerLog()<< QString::fromLocal8Bit("数据库异常,")<<"Close database error:" << sqlite3_errmsg(m_pDB);
- return false;
- }
- }
- bool CSqlite3DBProc::ExcuteSql(std::string sSql)
- {
- try
- {
- char* errMsg;
- if(sqlite3_exec(m_pDB , /*GBKToUTF8*/(sSql.c_str())/*.c_str()*/, 0, 0, &errMsg) != SQLITE_OK)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,")<< QString::fromLocal8Bit("执行SQL出错:") << sSql.c_str() << "ErrorMsg:" << errMsg;
- return false;
- }
- return true;
- }
- catch(...)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,") << QString::fromLocal8Bit("执行SQL出错") << sqlite3_errmsg(m_pDB);
- return false;
- }
- }
- bool CSqlite3DBProc::QuerySql(std::string sSql, sqlite3_stmt** m_stmt)
- {
- try
- {
- m_bIsEof = false;
- const char *zTail;
- if(sqlite3_prepare_v2(m_pDB, /*GBKToUTF8*/(sSql.c_str())/*.c_str()*/, /*GBKToUTF8*/(sSql/*.c_str()*/).length(), m_stmt, &zTail) !=SQLITE_OK)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,") << QString::fromLocal8Bit("执行SQL出错") << sSql.c_str() << "ErrorMsg:" << sqlite3_errmsg(m_pDB);
- return false;
- }
- return true;
- }
- catch(...)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,") << QString::fromLocal8Bit("执行SQL出错") << sqlite3_errmsg(m_pDB);
- return false;
- }
- }
- bool CSqlite3DBProc::BeginGetFields(sqlite3_stmt *m_stmt)
- {
- return Next(m_stmt);
- }
- bool CSqlite3DBProc::EndGetFields(sqlite3_stmt *m_stmt)
- {
- try
- {
- sqlite3_finalize(m_stmt);
- return true;
- }
- catch(...)
- {
- myServerLog()<< QString::fromLocal8Bit("数据库异常,") << QString::fromLocal8Bit("EndGetFields 出错:") << sqlite3_errmsg(m_pDB);
- return false;
- }
- }
- bool CSqlite3DBProc::Eof()
- {
- return m_bIsEof;
- }
- bool CSqlite3DBProc::Next(sqlite3_stmt *m_stmt)
- {
- try
- {
- if( sqlite3_step(m_stmt) != SQLITE_ROW )
- {
- m_bIsEof = true;
- }
- else
- {
- m_bIsEof = false;
- }
- return true;
- }
- catch(...)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,")<< QString::fromLocal8Bit("获取下一条记录出错:") << sqlite3_errmsg(m_pDB);
- return false;
- }
- }
- int CSqlite3DBProc::GetFields(int nCol, int &nField, sqlite3_stmt *m_stmt)
- {
- try
- {
- nField = sqlite3_column_int(m_stmt, nCol);
- return nField;
- }
- catch(...)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,")<< QString::fromLocal8Bit("获取记录出错:") << sqlite3_errmsg(m_pDB);
- return -1;
- }
- }
- __int64 CSqlite3DBProc::GetFields(int nCol, __int64 &nField, sqlite3_stmt *m_stmt)
- {
- try
- {
- nField = sqlite3_column_int64(m_stmt, nCol);
- return nField;
- }
- catch(...)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,")<< QString::fromLocal8Bit("获取记录出错:") << sqlite3_errmsg(m_pDB);
- return -1;
- }
- }
- double CSqlite3DBProc::GetFields(int nCol, double &fField, sqlite3_stmt *m_stmt)
- {
- try
- {
- fField = sqlite3_column_double(m_stmt, nCol);
- return fField;
- }
- catch(...)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,")<< QString::fromLocal8Bit("获取记录出错:") << sqlite3_errmsg(m_pDB);
- return -1;
- }
- }
- std::string CSqlite3DBProc::GetFields(int nCol, std::string &sField, sqlite3_stmt *m_stmt)
- {
- try
- {
- sField = (char*)sqlite3_column_text(m_stmt, nCol);
- return sField;
- }
- catch(...)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,")<< QString::fromLocal8Bit("获取记录出错:") << sqlite3_errmsg(m_pDB);
- return "";
- }
- }
- bool CSqlite3DBProc::BeginTransaction()
- {
- try
- {
- char *errMsg;
- if(sqlite3_exec(m_pDB,"begin transaction;",0,0, &errMsg) != SQLITE_OK)
- {
- myServerLog()<< QString::fromLocal8Bit("数据库异常,") << QString::fromLocal8Bit("启动事务出错,ErrorMsg:") << errMsg;
- return false;
- }
- return true;
- }
- catch(...)
- {
- myServerLog()<< QString::fromLocal8Bit("数据库异常,") << QString::fromLocal8Bit("启动事务出错,ErrorMsg:") << sqlite3_errmsg(m_pDB);
- return false;
- }
- }
- bool CSqlite3DBProc::CommitTransaction()
- {
- try
- {
- char *errMsg;
- if(sqlite3_exec(m_pDB,"commit transaction;",0,0, &errMsg) != SQLITE_OK)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,")<< QString::fromLocal8Bit("提交事务出错,ErrorMsg:") << errMsg;
- return false;
- }
- return true;
- }
- catch(...)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,")<< QString::fromLocal8Bit("提交事务出错,ErrorMsg:") << sqlite3_errmsg(m_pDB);
- return false;
- }
- }
- bool CSqlite3DBProc::RollbakTransaction()
- {
- try
- {
- char *errMsg;
- if(sqlite3_exec(m_pDB,"rollback transaction;",0,0, &errMsg) != SQLITE_OK)
- {
- myServerLog()<< QString::fromLocal8Bit("数据库异常,") << QString::fromLocal8Bit("回滚事务出错,ErrorMsg:") << errMsg;
- return false;
- }
- return true;
- }
- catch(...)
- {
- myServerLog() << QString::fromLocal8Bit("数据库异常,")<< QString::fromLocal8Bit("回滚事务出错,ErrorMsg:") << sqlite3_errmsg(m_pDB);
- return false;
- }
- }
- const std::string CSqlite3DBProc::ErrMsg()
- {
- return sqlite3_errmsg(m_pDB);
- }
|