Sqlite 数据库操作(二)—— Sqlite常用API 及其使用方法

要使用sqlite数据库的API,需要满足两个条件:

  • 安装sqlite3函数库 —— 终端输入 sudo apt-get install libsqlite3-dev
  • 在程序中引入头文件 sqlite3.h —— #include
  • gcc编译时链接 sqlite3动态库 —— gcc -o sqlite3_t sqlite3_t.c -lsqlite3

目录

1、打开数据库文件 sqlite3_open

2、关闭数据库文件 sqlite3_close

3、执行sql语句 sqlite3_exec

(1) sqlite3_exec

(2) 回调函数 callback 参数解析

4、查询表格数据 sqlite3_get_table

5、总结:使用上述API实现表格的创建及增删查改

1、打开数据库文件 sqlite3_open

Sqlite 数据库操作(二)—— Sqlite常用API 及其使用方法

第一个参数 filename:数据库名称(输入型参数)。sqlite3命令创建数据库的时候,会生成一个数据库文件 xxx.db ,这里要填的就是该数据库文件的路径。

第二个参数ppDb:数据库操作句柄(输出型参数)。后续的增删查改操作都需要通过该句柄实现

返回值:成功返回 SQLITE_OK,失败返回错误码,可以使用sqlite3_errmsg函数获取错误信息。

#include

#define DATABASE "/home/linux/myproject.db"

sqlite3* db;
if(sqlite3_open(DATABASE, &db) != SQLITE_OK){
    printf("%s\n", sqlite3_errmsg(&db));
    exit(1);
}

2、关闭数据库文件 sqlite3_close

参数是数据库操作句柄,如果关闭成功返回SQLITE_OK,如果数据库还处在使用状态,那就会关闭失败,此时返回 SQLITE_BUSY。

Sqlite 数据库操作(二)—— Sqlite常用API 及其使用方法

3、执行sql语句 sqlite3_exec

(1) sqlite3_exec

Sqlite 数据库操作(二)—— Sqlite常用API 及其使用方法

第一个参数 sqlite3:数据库操作句柄

第二个参数 sql:要执行的sql语句

第三个参数 callback:回调函数。只有在执行查询语句的时候,才会需要传参,其他执行语句,直接填NULL。只有在查询的时候,会返回查询结果,回调函数的参数大部分是输出型参数,用于返回查询结果。

第四个参数 args:给回调函数传递的参数。

第五个参数 errmsg:执行sql语句时产生的错误信息。

返回值:成功返回SQLITE_OK;失败返回错误码

int callback(void* arg, int ncolumns , char** f_value, char** f_name)
{}

char** errmsg;
if(sqlite3_exec(&db, "select * from project", callback, NULL, &errmsg) != SQLITE_OK)
{
    printf("%s\n", errmsg);
}

(2) 回调函数 callback 参数解析

在查询的过程中,每查询到一条记录就会通过回调函数返回,而不是查询到所有数据再一起返回

int callback(void* arg, int ncolumns , char** f_value, char** f_name);

第一个参数 arg:sqlite_exec传递过来的参数

第二个参数 ncolumns:列数

第三个参数 f_value:某一个字段的所有内容

第四个参数 f_name:字段名称

4、查询表格数据 sqlite3_get_table

除了使用 sqlite3_exec 来查询表格内容外,还可以使用 sqlite3_get_table 来直接获取到表格内容,该函数无需传入回调函数。

Sqlite 数据库操作(二)—— Sqlite常用API 及其使用方法

第一个参数 db:数据库操作句柄

第二个参数 zSql:要执行的sql语句

第三个参数 pazResult:查询到的表格数据。该指针指向的空间是动态开辟的,使用完以后,我们需要使用 sqlite3_free_table 来释放这块空间。

第四个参数 pnRow:查询结果的行数。即有多少条记录

第五个参数 pnColumn:查询结果的列数。即每一条记录有多少个字段

第六个参数 pzErrmsg:执行语句时产生的错误信息

返回值:成功返回SQLITE_OK;失败返回错误码

如果表格内容如下:

Sqlite 数据库操作(二)—— Sqlite常用API 及其使用方法
那么结果返回的内容如下:

Sqlite 数据库操作(二)—— Sqlite常用API 及其使用方法

5、总结:使用上述API实现表格的创建及增删查改

#include
#include
#include

#define DATABASE "/home/linux/myproject.db"

int main(){
    sqlite3* db;
    // 1.打开数据库文件
    if(sqlite3_open(DATABASE, &db) != SQLITE_OK){
        printf("%s\n",(char*)sqlite3_errmsg(db));
        return 1;
    }

    // 2.新建一个表格
    char** errmsg;
    const char* sql = "drop table if exists project;\
                  create table project(id integer, device char, code integer);";
    if(sqlite3_exec(db, sql, NULL, NULL, errmsg) != SQLITE_OK)
    {
        printf("%s\n", *errmsg);
        return 1;
    }

    // 3.插入一条记录
    sql = "insert into project values(1, '冰箱', 1001);";
    if(sqlite3_exec(db, sql, NULL, NULL, errmsg) != SQLITE_OK)
    {
        printf("%s\n", *errmsg);
    }

    // 4.修改记录
    sql = "update project set device='电饭煲' where id=1;";
    if(sqlite3_exec(db, sql, NULL, NULL, errmsg) != SQLITE_OK)
    {
        printf("%s\n", *errmsg);
    }

    // 5.查询记录
    sql = "select * from project;";
    char** sqlRes;
    int nRows;
    int nColumns;
    int i, j;
    if(sqlite3_get_table(db, sql, &sqlRes, &nRows, &nColumns, errmsg)==SQLITE_OK)
    {
        for(i = 0; i

Sqlite 数据库操作(二)—— Sqlite常用API 及其使用方法

Original: https://blog.csdn.net/challenglistic/article/details/128287027
Author: 仲夏夜之梦~
Title: Sqlite 数据库操作(二)—— Sqlite常用API 及其使用方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816424/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球