Linux系统下SQLite3使用教程(二)

Linux系统下SQLite3使用教程(二)

SQLite 是一个轻量级的嵌入式数据库,非常适合用于小型项目或学习数据库操作。本文将教你如何在 Linux 环境下,使用 C 语言与 SQLite3 进行交互,完成增删改查操作。

一、准备工作

1. 安装 SQLite3

在 Linux 系统中,可以通过以下命令安装 SQLite3:

sudo apt-get update
sudo apt-get install sqlite3

安装完成后,可以通过以下命令验证安装是否成功:

sqlite3 --version

2. 安装 SQLite3 开发库

为了在 C 语言中使用 SQLite3,还需要安装开发库:

sudo apt-get install libsqlite3-dev

3. 创建测试数据库

在当前目录下创建一个名为 test.db 的 SQLite 数据库文件:

sqlite3 test.db

进入 SQLite 命令行后,创建一个测试表 users:

CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    age INTEGER NOT NULL
);

退出 SQLite:

.exit

二、C 语言与 SQLite3 的交互

1. 包含头文件

在 C 程序中使用 SQLite3,需要包含 SQLite3 的头文件:

#include <sqlite3.h>

2. 打开数据库

使用 sqlite3_open() 函数打开数据库文件:

sqlite3* db;
int rc = sqlite3_open("test.db", &db);
if (rc) {
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
    return 1;
}

3. 执行 SQL 语句

SQLite3 提供了 sqlite3_exec() 函数,用于执行 SQL 语句。例如:

const char* sql = "INSERT INTO users (name, age) VALUES ('Alice', 25);";
rc = sqlite3_exec(db, sql, 0, 0, &errMsg);
if (rc != SQLITE_OK) {
    fprintf(stderr, "SQL error: %s\n", errMsg);
    sqlite3_free(errMsg);
}

4. 查询数据

对于查询操作,可以使用 sqlite3_prepare_v2()sqlite3_step() 函数。例如:

const char* selectSql = "SELECT id, name, age FROM users;";
sqlite3_stmt* stmt;
rc = sqlite3_prepare_v2(db, selectSql, -1, &stmt, NULL);
if (rc == SQLITE_OK) {
    while (sqlite3_step(stmt) == SQLITE_ROW) {
        int id = sqlite3_column_int(stmt, 0);
        const char* name = (const char*)sqlite3_column_text(stmt, 1);
        int age = sqlite3_column_int(stmt, 2);
        printf("ID: %d, Name: %s, Age: %d\n", id, name, age);
    }
}
sqlite3_finalize(stmt);

5. 关闭数据库

完成操作后,记得关闭数据库:

sqlite3_close(db);

三、完整示例代码

以下是一个完整的示例代码,演示如何实现增删改查操作:

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

int main() {
    sqlite3* db;
    int rc;
    const char* errMsg;

    // 打开数据库
    rc = sqlite3_open("test.db", &db);
    if (rc) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        return 1;
    }

    // 插入数据
    const char* insertSql = "INSERT INTO users (name, age) VALUES ('Bob', 30);";
    rc = sqlite3_exec(db, insertSql, 0, 0, &errMsg);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "Insert error: %s\n", errMsg);
        sqlite3_free((void*)errMsg);
    }

    // 查询数据
    const char* selectSql = "SELECT id, name, age FROM users;";
    sqlite3_stmt* stmt;
    rc = sqlite3_prepare_v2(db, selectSql, -1, &stmt, NULL);
    if (rc == SQLITE_OK) {
        printf("\nQuery Results:\n");
        while (sqlite3_step(stmt) == SQLITE_ROW) {
            int id = sqlite3_column_int(stmt, 0);
            const char* name = (const char*)sqlite3_column_text(stmt, 1);
            int age = sqlite3_column_int(stmt, 2);
            printf("ID: %d, Name: %s, Age: %d\n", id, name, age);
        }
    }
    sqlite3_finalize(stmt);

    // 更新数据
    const char* updateSql = "UPDATE users SET age = 31 WHERE name = 'Bob';";
    rc = sqlite3_exec(db, updateSql, 0, 0, &errMsg);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "Update error: %s\n", errMsg);
        sqlite3_free((void*)errMsg);
    }

    // 删除数据
    const char* deleteSql = "DELETE FROM users WHERE name = 'Alice';";
    rc = sqlite3_exec(db, deleteSql, 0, 0, &errMsg);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "Delete error: %s\n", errMsg);
        sqlite3_free((void*)errMsg);
    }

    // 关闭数据库
    sqlite3_close(db);
    printf("\nDatabase closed.\n");
    return 0;
}

四、编译与运行

使用以下命令编译代码:

gcc -o sqlite_example sqlite_example.c -lsqlite3

运行程序:

./sqlite_example

五、总结

通过本文,你学会了如何在 Linux 下使用 C 语言与 SQLite3 进行交互,完成增删改查操作。SQLite3 是一个非常轻量级的数据库,适合嵌入式系统或小型项目。如果你对数据库操作有更高的需求,可以进一步学习 SQLite3 的高级功能,例如事务处理、索引优化等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值