2019-07-28 10:31:56 +08:00
|
|
|
|
#pragma once
|
2017-06-02 14:47:24 +08:00
|
|
|
|
#include "../acl_cpp_define.hpp"
|
|
|
|
|
#include "../stdlib/string.hpp"
|
|
|
|
|
#include "../db/db_handle.hpp"
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
2019-05-19 16:54:20 +08:00
|
|
|
|
#if !defined(ACL_DB_DISABLE)
|
|
|
|
|
|
2014-11-19 00:25:21 +08:00
|
|
|
|
typedef struct sqlite3 sqlite3;
|
2020-12-16 12:06:27 +08:00
|
|
|
|
typedef struct sqlite3_stmt sqlite3_stmt;
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
namespace acl {
|
|
|
|
|
|
|
|
|
|
class charset_conv;
|
2018-09-02 20:38:33 +08:00
|
|
|
|
class sqlite_cursor;
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
class ACL_CPP_API db_sqlite : public db_handle
|
|
|
|
|
{
|
|
|
|
|
public:
|
2015-10-25 14:15:07 +08:00
|
|
|
|
/**
|
2019-07-28 10:31:56 +08:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>캯<EFBFBD><EFBFBD>
|
|
|
|
|
* @param charset {const char*} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>(gbk, utf-8, ...)
|
2015-10-25 14:15:07 +08:00
|
|
|
|
*/
|
|
|
|
|
db_sqlite(const char* dbfile, const char* charset = "utf-8");
|
2014-11-19 00:25:21 +08:00
|
|
|
|
~db_sqlite(void);
|
|
|
|
|
|
|
|
|
|
/**
|
2019-07-28 10:31:56 +08:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ǰ<EFBFBD><EFBFBD> sqlite <EFBFBD>İ汾<EFBFBD><EFBFBD>Ϣ
|
2021-06-22 16:02:21 +08:00
|
|
|
|
* @return {const char*}
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
|
|
|
|
const char* version(void) const;
|
|
|
|
|
|
|
|
|
|
/**
|
2019-07-28 10:31:56 +08:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD>ѭ sqlite <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>
|
|
|
|
|
* @param pragma {const char*} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>ʽΪ<EFBFBD><EFBFBD>
|
2014-11-19 00:25:21 +08:00
|
|
|
|
* PRAGMA xxx=xxx
|
2019-07-28 10:31:56 +08:00
|
|
|
|
* <EFBFBD>磺PRAGMA synchronous = NORMAL
|
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
|
|
|
|
bool set_conf(const char* pragma);
|
|
|
|
|
|
|
|
|
|
/**
|
2019-07-28 10:31:56 +08:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô˺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>
|
|
|
|
|
* @param pragma {const char*} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD>ʽΪ<EFBFBD><EFBFBD>
|
2014-11-19 00:25:21 +08:00
|
|
|
|
* PRAGMA xxx
|
2019-07-28 10:31:56 +08:00
|
|
|
|
* <EFBFBD>磺PRAGMA synchronous
|
|
|
|
|
* @param out {string&} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ǿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @return {const char*} Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
|
|
|
|
const char* get_conf(const char* pragma, string& out);
|
|
|
|
|
|
|
|
|
|
/**
|
2019-07-28 10:31:56 +08:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>
|
|
|
|
|
* @param pragma {const char*} ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ʽΪ<EFBFBD><EFBFBD>PRAGMA xxx<EFBFBD><EFBFBD><EFBFBD>磺PRAGMA synchronous
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
|
|
|
|
void show_conf(const char* pragma = NULL);
|
|
|
|
|
|
|
|
|
|
/**
|
2019-07-28 10:31:56 +08:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @return {int} Ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-1 <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
2017-06-28 12:25:29 +08:00
|
|
|
|
int affect_total_count(void) const;
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2019-07-28 10:31:56 +08:00
|
|
|
|
* ֱ<EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD> sqlite <EFBFBD>ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NULL <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ sqlite <EFBFBD><EFBFBD>û<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ڲ<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD> sqlite
|
2014-11-19 00:25:21 +08:00
|
|
|
|
* @return {sqlite3*}
|
|
|
|
|
*/
|
2017-06-28 12:25:29 +08:00
|
|
|
|
sqlite3* get_conn(void) const
|
2014-11-19 00:25:21 +08:00
|
|
|
|
{
|
|
|
|
|
return db_;
|
|
|
|
|
}
|
|
|
|
|
|
2018-09-02 20:38:33 +08:00
|
|
|
|
/**
|
2019-07-28 10:31:56 +08:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>α<EFBFBD>
|
2018-09-02 20:38:33 +08:00
|
|
|
|
* @param cursor {sqlite_cursor&}
|
|
|
|
|
* @return {bool}
|
|
|
|
|
*/
|
|
|
|
|
bool prepare(sqlite_cursor& cursor);
|
|
|
|
|
|
|
|
|
|
/**
|
2019-07-28 10:31:56 +08:00
|
|
|
|
* ִ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2018-09-02 20:38:33 +08:00
|
|
|
|
* @param cursor {sqlite_cursor&}
|
|
|
|
|
* @return {bool}
|
|
|
|
|
*/
|
|
|
|
|
bool next(sqlite_cursor& cursor, bool* done);
|
|
|
|
|
|
2020-12-16 12:06:27 +08:00
|
|
|
|
/********************************************************************/
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD>ΪһЩ sqlite3 <20><>˽<EFBFBD>нӿ<D0BD> */
|
|
|
|
|
/********************************************************************/
|
|
|
|
|
|
2020-12-17 09:06:54 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD>zSql<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ϊ prepared statement
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param zSql {const char*} utf-8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sql
|
|
|
|
|
* @param nByte {int} zSql<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param ppStmt {sqlite3_stmt**} OUT: prepared statement<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param pzTail {const char**} OUT: ָ<EFBFBD><EFBFBD>zSqlδʹ<EFBFBD>ò<EFBFBD><EFBFBD>ֵ<EFBFBD>ָ<EFBFBD><EFBFBD>
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {int} <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SQLITE_OK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
int sqlite3_prepare_v2(const char *zSql,
|
|
|
|
|
int nByte, sqlite3_stmt **ppStmt, const char **pzTail);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> prepared statement
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param stmt {sqlite3_stmt*} prepared statement
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD> SQLITE_BUSY, SQLITE_DONE, SQLITE_ROW,
|
|
|
|
|
* SQLITE_ERROR, <EFBFBD><EFBFBD> SQLITE_MISUSE
|
|
|
|
|
*/
|
|
|
|
|
int sqlite3_step(sqlite3_stmt *stmt);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD>prepared statement<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>״̬
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param pStmt {sqlite3_stmt*} prepared statement
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {int} SQLITE_ROW, SQLITE_DONE <EFBFBD><EFBFBD> SQLITE_OK
|
|
|
|
|
*/
|
|
|
|
|
int sqlite3_reset(sqlite3_stmt *pStmt);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD>ͷ<EFBFBD> prepared statement <EFBFBD><EFBFBD>Դ
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param stmt {sqlite3_stmt*} prepared statement<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {int} SQLITE_OK <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
2021-06-22 16:02:21 +08:00
|
|
|
|
int sqlite3_finalize(sqlite3_stmt *stmt);
|
2020-12-17 09:06:54 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param stmt {sqlite3*} prepared statement
|
|
|
|
|
* @param iCol {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>sql<EFBFBD>еIJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param value {const void*} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>sql<EFBFBD>еIJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
* @param n {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<EFBFBD><EFBFBD><EFBFBD>
|
2021-06-22 17:02:16 +08:00
|
|
|
|
* @param destory {void(*)(void*)} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {int} <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SQLITE_OK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
int sqlite3_bind_blob(sqlite3_stmt *stmt, int iCol,
|
2021-06-22 17:02:16 +08:00
|
|
|
|
const void *value, int n, void(*destory)(void*));
|
2020-12-17 09:06:54 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>int<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param stmt {sqlite3*} prepared statement
|
|
|
|
|
* @param iCol {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>sql<EFBFBD>еIJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param value {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>sql<EFBFBD>еIJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {int} <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SQLITE_OK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
int sqlite3_bind_int(sqlite3_stmt *stmt, int iCol, int value);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>int64<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param stmt {sqlite3*} prepared statement
|
|
|
|
|
* @param iCol {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>sql<EFBFBD>еIJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param value {long long int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>sql<EFBFBD>еIJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {int} <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SQLITE_OK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
2021-06-22 16:02:21 +08:00
|
|
|
|
int sqlite3_bind_int64(sqlite3_stmt* stmt, int iCol, long long int value);
|
2020-12-17 09:06:54 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>text<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param stmt {sqlite3*} prepared statement
|
|
|
|
|
* @param iCol {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>sql<EFBFBD>еIJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param value {const void*} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>sql<EFBFBD>еIJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
* @param n {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<EFBFBD><EFBFBD><EFBFBD>
|
2021-06-22 17:02:16 +08:00
|
|
|
|
* @param destory {void(*)(void*)} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {int} <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SQLITE_OK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
int sqlite3_bind_text(sqlite3_stmt *stmt, int iCol,
|
2021-06-22 17:02:16 +08:00
|
|
|
|
const char *value, int n, void(*destory)(void*));
|
2020-12-17 09:06:54 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> prepared statement <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2021-06-22 16:02:21 +08:00
|
|
|
|
* @param stmt {sqlite3_stmt*} prepared statement
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
2021-06-22 16:02:21 +08:00
|
|
|
|
int sqlite3_column_count(sqlite3_stmt *stmt);
|
2020-12-17 09:06:54 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>Ӧ<EFBFBD>еĶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param stmt {sqlite3_stmt*} prepared statement
|
|
|
|
|
* @param iCol {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @return {const void*} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
2020-12-17 09:06:54 +08:00
|
|
|
|
*/
|
|
|
|
|
const void *sqlite3_column_blob(sqlite3_stmt *stmt, int iCol);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>Ӧ<EFBFBD>е<EFBFBD>int<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param stmt {sqlite3_stmt*} prepared statement
|
|
|
|
|
* @param iCol {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
2021-06-22 16:02:21 +08:00
|
|
|
|
int sqlite3_column_int(sqlite3_stmt *stmt, int iCol);
|
2020-12-17 09:06:54 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>Ӧ<EFBFBD>е<EFBFBD>int64<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param stmt {sqlite3_stmt*} prepared statement
|
|
|
|
|
* @param iCol {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2021-02-02 22:09:03 +08:00
|
|
|
|
* @return {long long int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2020-12-17 09:06:54 +08:00
|
|
|
|
*/
|
2021-06-22 16:02:21 +08:00
|
|
|
|
long long int sqlite3_column_int64(sqlite3_stmt *stmt, int iCol);
|
2020-12-17 09:06:54 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>Ӧ<EFBFBD>е<EFBFBD> utf-8 text <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param stmt {sqlite3_stmt*} prepared statement
|
|
|
|
|
* @param iCol {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {const unsigned char *} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
2021-06-22 16:02:21 +08:00
|
|
|
|
const unsigned char *sqlite3_column_text(sqlite3_stmt *stmt, int iCol);
|
2020-12-17 09:06:54 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>Ӧ<EFBFBD>еĽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<EFBFBD><EFBFBD><EFBFBD>
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param stmt {sqlite3_stmt*} prepared statement
|
|
|
|
|
* @param iCol {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {const unsigned char *} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
2021-06-22 16:02:21 +08:00
|
|
|
|
int sqlite3_column_bytes(sqlite3_stmt *stmt, int iCol);
|
2020-12-17 09:06:54 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>select<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param stmt {sqlite3_stmt*} prepared statement
|
|
|
|
|
* @param iCol {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {const char*} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
const char *sqlite3_column_name(sqlite3_stmt *stmt, int iCol);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ִ<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD>sql<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param sql {const char*} <EFBFBD><EFBFBD>ִ<EFBFBD>е<EFBFBD>sql<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param callback {int (*)(void*,int,char**,char**)} callback<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param arg {void*}callback<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param errmsg {char**} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
2020-12-17 09:06:54 +08:00
|
|
|
|
* @return {int} SQLITE_OK <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
int sqlite3_exec(const char *sql,
|
|
|
|
|
int(*callback)(void*,int,char**,char**), void *arg, char **errmsg);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Ϊ<EFBFBD>ͷ<EFBFBD> errmsg <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵĽӿ<EFBFBD>
|
2021-02-02 22:24:14 +08:00
|
|
|
|
* @param ptr {void*} <EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
2020-12-17 09:06:54 +08:00
|
|
|
|
*/
|
|
|
|
|
void sqlite3_free(void* ptr);
|
2020-12-16 12:06:27 +08:00
|
|
|
|
|
2016-10-24 11:44:12 +08:00
|
|
|
|
/********************************************************************/
|
2019-07-28 10:31:56 +08:00
|
|
|
|
/* <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD> db_handle <20><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD> */
|
2016-10-24 11:44:12 +08:00
|
|
|
|
/********************************************************************/
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2017-06-28 12:25:29 +08:00
|
|
|
|
* @override
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
2017-06-28 12:25:29 +08:00
|
|
|
|
const char* dbtype(void) const;
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2017-06-28 12:25:29 +08:00
|
|
|
|
* @override
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
2017-06-28 12:25:29 +08:00
|
|
|
|
int get_errno(void) const;
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2017-06-28 12:25:29 +08:00
|
|
|
|
* @override
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
2017-06-28 12:25:29 +08:00
|
|
|
|
const char* get_error(void) const;
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2017-06-28 12:25:29 +08:00
|
|
|
|
* @override
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
2015-11-09 22:11:21 +08:00
|
|
|
|
bool dbopen(const char* charset = NULL);
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2017-06-28 12:25:29 +08:00
|
|
|
|
* @override
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
2017-06-28 12:25:29 +08:00
|
|
|
|
bool is_opened(void) const;
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2017-06-28 12:25:29 +08:00
|
|
|
|
* @override
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
2015-08-02 18:21:24 +08:00
|
|
|
|
bool close(void);
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2017-06-28 12:25:29 +08:00
|
|
|
|
* @override
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
2015-08-02 18:21:24 +08:00
|
|
|
|
bool tbl_exists(const char* tbl_name);
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2017-06-28 12:25:29 +08:00
|
|
|
|
* @override
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
2017-03-25 23:05:44 +08:00
|
|
|
|
bool sql_select(const char* sql, db_rows* result = NULL);
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2017-06-28 12:25:29 +08:00
|
|
|
|
* @override
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
2015-08-02 18:21:24 +08:00
|
|
|
|
bool sql_update(const char* sql);
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2017-06-28 12:25:29 +08:00
|
|
|
|
* @override
|
|
|
|
|
*/
|
|
|
|
|
int affect_count(void) const;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @override
|
|
|
|
|
*/
|
|
|
|
|
bool begin_transaction(void);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @override
|
|
|
|
|
*/
|
|
|
|
|
bool commit(void);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @override
|
2014-11-19 00:25:21 +08:00
|
|
|
|
*/
|
2017-06-28 12:25:29 +08:00
|
|
|
|
bool set_busy_timeout(int nMillisecs);
|
2015-08-02 18:21:24 +08:00
|
|
|
|
|
2020-12-16 12:06:27 +08:00
|
|
|
|
|
2014-11-19 00:25:21 +08:00
|
|
|
|
private:
|
2019-07-28 10:31:56 +08:00
|
|
|
|
// sqlite <20><><EFBFBD><EFBFBD>
|
2014-11-19 00:25:21 +08:00
|
|
|
|
sqlite3* db_;
|
|
|
|
|
|
2019-07-28 10:31:56 +08:00
|
|
|
|
// <20><><EFBFBD>ݴ洢<DDB4>ļ<EFBFBD>
|
2014-11-19 00:25:21 +08:00
|
|
|
|
string dbfile_;
|
|
|
|
|
|
2019-07-28 10:31:56 +08:00
|
|
|
|
// <20>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>
|
2014-11-19 00:25:21 +08:00
|
|
|
|
charset_conv* conv_;
|
|
|
|
|
|
2019-07-28 10:31:56 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
2015-10-25 14:15:07 +08:00
|
|
|
|
string charset_;
|
2014-11-19 00:25:21 +08:00
|
|
|
|
|
2019-07-28 10:31:56 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>SQL<51><4C>ѯ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
|
2017-03-25 23:05:44 +08:00
|
|
|
|
bool exec_sql(const char* sql, db_rows* result = NULL);
|
2014-11-19 00:25:21 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
} // namespace acl
|
2019-05-19 16:54:20 +08:00
|
|
|
|
|
|
|
|
|
#endif // !defined(ACL_DB_DISABLE)
|