常见sqlite3 API的简单说明

打开数据库

int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);

sqlite3_open 打开一个由文件名参数 filename 指定的SQLite数据库文件。如果成功打开数据库,则返回 SQLITE_OK

编译SQL语句

int sqlite3_prepare_v2(
  sqlite3 *db,            /* Database handle */
  const char *zSql,       /* SQL statement, UTF-8 encoded */
  int nByte,              /* Maximum length of zSql in bytes. */
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
  const char **pzTail     /* OUT: Pointer to unused portion of zSql */
);

db 指向打开的数据库。

zSql 指向sql语句。

nByte 如果是负数则zSql将会被读到空字符‘\0‘为止,否则从zSql中读取n个字节。

ppStmt 是我们传入 sqlite3_stmt 结构指针的地址

pzTail 简单用法直接传递nullptr

sqlite3_prepare_v2将zSql 翻译成字节码程序存储在 sqlite3_stmt中并返回给我们指针。(官网上没找到原话。己见!!!)

如果成功,则返回 SQLITE_OK

执行编译的SQL语句

int sqlite3_step(sqlite3_stmt*);

如果正在执行的SQL语句返回任何数据,那么每当有一行新数据准备好由调用者处理时,就返回SQLITE_ROW。可以使用列访问函数访问这些值。再次调用sqlite3_step()来检索下一行数据。(自动执行sqlite3_reset() )

列访问函数

const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);

返回iCol列的数据(从0开始)。

销毁 sqlite3_stmt 对象

int sqlite3_finalize(sqlite3_stmt *pStmt);

成功返回 SQLITE_OK 

关闭数据库

int sqlite3_close(sqlite3*);

成功返回 SQLITE_OK

测试实例

#include <iostream>
#include <stdio.h>
#include <string>
#include "sqlite3.h"


using namespace std;

int main()
{
        char dbPath[] = "./test.db";
        char  zSql[] = "select * from user";
        sqlite3 * db;
        sqlite3_stmt * pStmt;
        int rv = sqlite3_open(dbPath, &db);
        char * value;


        if(rv != SQLITE_OK){
                fprintf(stderr, "cant‘t open db\n");
                return -1;
        }

        rv = sqlite3_prepare_v2(db, zSql, -1, &pStmt, 0);
        if(rv != SQLITE_OK){
                fprintf(stderr, "compiled failed\n");
                return -2;
        }

        while(sqlite3_step(pStmt) == SQLITE_ROW){
        int len = sqlite3_column_count(pStmt);
        for(int i = 0; i < len ;i++){
                value = (char *)sqlite3_column_text(pStmt, i);
                printf("%s\t\t", value);

        }
        printf("\n");
        }
        sqlite3_close(db);
        return 0;
}

P.S.

编译是需要使用动态库。

我的命令: g++ msqlite3.cpp    -l    sqlite3

const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);

常见sqlite3 API的简单说明

上一篇:【BigData】Java基础_DataOutputStream与DataInputStream


下一篇:Oracle利用位运算实现一个字段表达多种状态