SQLite API函数

SQLite是一种轻量级的嵌入式SQL数据库,常用于轻量级应用。在C语言中,SQLite提供了如sqlite3_open、sqlite3_exec等API来操作数据库,包括打开/关闭数据库、执行SQL、处理查询结果和错误信息。示例代码展示了如何创建数据库、定义表和插入数据。
摘要由CSDN通过智能技术生成

SQLite 是一种嵌入式 SQL 数据库引擎,其库文件大小小、速度快,常被用于轻量级的数据库应用开发,也广泛支持不同的编程语言,如 C、C++、Python 等。

在 C 语言中,SQLite 提供了一系列的 API 函数,用于与 SQLite 数据库交互,主要包括以下几类函数:

1.打开关闭数据库:

int sqlite3_open(const char *filename, sqlite3 **ppDb);
int sqlite3_close(sqlite3* db);

·filename:要打开的数据库文件名

·ppDb:指向sqlite3指针的指针,用于存储向打开的数据库连接的地址

sqlite3_open()函数用于打开一个SQLite数据库,返回一个sqlite3的指针,用于后续操作数据库。

sqlite3_close()函数用于关闭一个已打开的数据库。

 

2.执行SQL语句:

int sqlite3_exec(sqlite3* db, const char *sql, int (*callback)(void*, int, char**, char**), void* data, char **errmsg);

db:一个已经打开的数据库连接

sql:要执行的SQL语句

callback:回调函数,用于处理查询结果集

data:传递给回调函数的用户数据指针

errmsg:用于存储错误信息的指针

sqlite3_exec函数用于执行SQL语句,包括查询、修改、删除等操作。在执行SQL语句时,用户可以通过回调函数处理查询结果或错误消息。

 

3.获取执行错误信息

const char *sqlite3_errmsg(sqlite3*);

sqlite3_errmsg()函数用于获取最后一次执行的SQL语句的错误信息

 

4.获取查询结果

int sqlite3_get_table(
    sqlite3* db,        // 打开数据库的连接对象  
    const char *sql,    // 要执行的SQL查询语句   
    char ***resultp,    // 用于存储结果的二维数组 
    int *nrow,          // 存储结果行数的指针
    int *ncolumn,       // 存储结果列数的指针
    char **errmsg       // 用于存储错误信息的指针
);
void sqlite3_free_table(char **result);

db:一个已经打开的数据库连接对象

sql:要执行的SQL查询语句

resultp:一个指针用于存储结果集的行数

nrow:一个指针,用于存储结果集的行数

ncolumn:一个指针,用于存储结果集的列数

errmsg:用于存储错误信息的指针。如果函数执行成功,该指针将为NULL;如果执行失败,它将指向一个错误信息字符串

sqlite3_get_table()函数用于查询结果,并将结果以二维数据的形式返回。

sqlite3_free_table()函数用于释放查询结果所占用的内存。

 

下面是一份使用 SQLite3 API 函数的示例代码,用于创建一个简单的数据库,创建表格,并插入一条数据:

#include <stdio.h>
#include <sqlite3.h> 

int main(int argc, char* argv[]) 
{
    sqlite3* db;
    char *err_msg = 0;
    int rc = sqlite3_open("test.db", &db);

    if (rc != SQLITE_OK) 
    {
        fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return 1;
    }

    char* sql = "CREATE TABLE Persons("
                "PersonID INT PRIMARY KEY,"
                "LastName TEXT NOT NULL,"
                "FirstName TEXT,"
                "Age INT);";

    rc = sqlite3_exec(db, sql, 0, 0, &err_msg);

    if (rc != SQLITE_OK) 
    {
        fprintf(stderr, "SQL error: %s\n", err_msg);
        sqlite3_free(err_msg);
    }

    sql = "INSERT INTO Persons VALUES(1, 'Smith', 'John', 25);";

    rc = sqlite3_exec(db, sql, 0, 0, &err_msg);

    if (rc != SQLITE_OK) 
    {
        fprintf(stderr, "SQL error: %s\n", err_msg);
        sqlite3_free(err_msg);
    }

    sqlite3_close(db);
    return 0;
}

 

int sqlite3_prepare_v2(
  sqlite3 *db,            /* 数据库句柄 */
  const char *zSql,       /* SQL 查询语句 */
  int nByte,              /* 将要使用的字节数 */
  sqlite3_stmt **ppStmt,  /* 编译后生成的 SQL 程序句柄 */
  const char **pzTail     /* 未编译部分的 SQL 查询语句 */
);

sqlite_prepare_v2函数用于将SQL查询语句编译成SQLite程序,各参数含义如下:

db:数据库句柄

zaql:SQL查询语句

nByte:zSql查询语句中将要使用的字节数,如果设置为-1,则SQLite将自动计算zSql的长度

ppStmt:是一个指向指针的指针,用于存储编译后生成的SQL程序句柄

pzTail:是一个指向指针的指针,用于存储未编译的部分SQL查询语句

示例:

#include <sqlite3.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    sqlite3 *db;
    sqlite3_stmt *stmt;
    const char *tail;

    char *sql = "SELECT * FROM my_table WHERE id = ?";

    if (sqlite3_open("my_database.db", &db) == SQLITE_OK)
    {
        if (sqlite3_prepare_v2(db, sql, -1, &stmt, &tail) == SQLITE_OK)
        {
            sqlite3_bind_int(stmt, 1, 1); // 绑定参数
            while (sqlite3_step(stmt) == SQLITE_ROW)
            {
                // 处理结果
                int id = sqlite3_column_int(stmt, 0);
                const unsigned char *name = sqlite3_column_text(stmt, 1);
                printf("id = %d, name = %s\n", id, name);
            }
        }
        sqlite3_finalize(stmt);
    }

    sqlite3_close(db);
    return 0;
}

 

 

在 SQLite API 中还包括其他的一些函数,如开启事务、回滚事务、提交事务等,这里不再一一列举。

总之,SQLite 是一种轻量级的数据库引擎,并提供了丰富的 API 函数用于与其交互,用户可以通过这些函数实现 SQL 语句的执行、错误信息的获取,查询结果的处理等操作。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗朗克21

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值