抛弃GdCpp*.dll/pdb历史重新建库。libhv和Sqlite的dll保留

This commit is contained in:
Zhang Jianjun
2026-02-02 16:09:02 +08:00
parent f148ca49e3
commit 4a2a284ac0
292 changed files with 350450 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
#ifndef _CSQLITE_STATEMENT_INNER_H
#define _CSQLITE_STATEMENT_INNER_H
#include "sqlite3.h"
#include "CSQLiteException.h"
#include <memory>
/// 封装一对数据库指针和Stmt指针用于一个共享指针_StatementPtr
class _Statement
{
public:
_Statement(sqlite3* apSQLite, const char * aQuery)
: mpSQLite(apSQLite)
, mpStmt(nullptr)
{
const int ret = sqlite3_prepare_v2(apSQLite, aQuery, -1, &mpStmt, nullptr);
if (SQLITE_OK != ret)
{
throw CSQLiteException(apSQLite, ret);
}
}
_Statement(sqlite3* apSQLite, const std::string& aQuery)
: mpSQLite(apSQLite)
, mpStmt(nullptr)
{
const int ret = sqlite3_prepare_v2(apSQLite, aQuery.c_str(), static_cast<int>(aQuery.size()), &mpStmt, nullptr);
if (SQLITE_OK != ret)
{
throw CSQLiteException(apSQLite, ret);
}
}
~_Statement()
{
// If count reaches zero, finalize the sqlite3_stmt, as no Statement nor Column objet use it anymore.
// No need to check the return code, as it is the same as the last statement evaluation.
sqlite3_finalize(mpStmt);
mpSQLite = nullptr;
mpStmt = nullptr;
}
private:
sqlite3* mpSQLite; //!< Pointer to SQLite Database Connection Handle
sqlite3_stmt* mpStmt; //!< Pointer to SQLite Statement Object
public:
/// Inline cast operator returning the pointer to SQLite Database Connection Handle
/// for functions like:
inline operator sqlite3*() const
{
return mpSQLite;
}
/// Inline cast operator returning the pointer to SQLite Statement Object
/// for function like: sqlite3_column_xxx()
inline operator sqlite3_stmt*() const
{
return mpStmt;
}
};
typedef std::shared_ptr<_Statement> _StatementPtr;
#endif // _STATEMENT_H