16. Ubuntu 安装与使用 SQLite 完整教程

一、安装 SQLite(两种方案)

方案1:安装命令行工具 + 开发库(推荐,C/C++ 编程必备)

打开终端,执行更新+安装:

bash 复制代码
sudo apt update
# 1. sqlite3 命令行客户端
# 2. libsqlite3-dev 开发库(提供sqlite3.h头文件、动态库,C代码编译要用)
sudo apt install sqlite3 libsqlite3-dev -y

方案2:仅命令行(只手动输SQL,不写代码)

bash 复制代码
sudo apt install sqlite3 -y

二、验证安装成功

终端输入:

bash 复制代码
sqlite3 --version

输出版本号即安装完成,示例输出:

复制代码
3.37.2 2022-01-06 13:25:41 872ba256cbf61d9290b131a6e804fd967abf522970f40be44f4367c723baalt1

三、命令行基础使用(手动操作数据库)

1. 创建/打开数据库

bash 复制代码
# 不存在则新建 test.db,存在直接打开
sqlite3 test.db

进入 sqlite> 交互终端。

2. 常用点命令(以 . 开头,不是SQL)

sql 复制代码
-- 查看所有表
.tables
-- 查看表结构
.schema 表名
-- 开启查询表头显示
.headers on
-- 表格格式化输出
.mode table
-- 退出sqlite终端
.quit

3. 基础SQL示例

sql 复制代码
-- 建表
CREATE TABLE IF NOT EXISTS user(id INTEGER PRIMARY KEY, name TEXT);
-- 插入数据
INSERT INTO user(name) VALUES('张三');
-- 查询
SELECT * FROM user;
-- 更新
UPDATE user SET name='李四' WHERE id=1;
-- 删除
DELETE FROM user WHERE id=1;

四、C语言代码编译运行(对应你图片里的 sqlite3_exec 接口)

1. 写测试代码 test_sql.c

c 复制代码
#include <stdio.h>
#include <sqlite3.h>

// 回调函数,查询时每行数据都会调用
int callback(void* arg, int col_num, char** col_data, char** col_name)
{
    for(int i = 0; i < col_num; i++)
    {
        printf("%s = %s\t", col_name[i], col_data[i]);
    }
    printf("\n");
    return 0;
}

int main()
{
    sqlite3* db;
    char* err_msg = NULL;
    int ret;

    // 1. 打开数据库
    ret = sqlite3_open("test.db", &db);
    if(ret != SQLITE_OK)
    {
        printf("打开数据库失败:%s\n", sqlite3_errmsg(db));
        return -1;
    }

    // 2. 建表语句(无查询,回调填NULL)
    const char* create_sql = "CREATE TABLE IF NOT EXISTS user(id INTEGER PRIMARY KEY, name TEXT);";
    ret = sqlite3_exec(db, create_sql, NULL, NULL, &err_msg);
    if(ret != SQLITE_OK)
    {
        printf("建表失败:%s\n", err_msg);
        sqlite3_free(err_msg);
    }

    // 3. 插入数据
    const char* insert_sql = "INSERT INTO user(name) VALUES('小明');";
    sqlite3_exec(db, insert_sql, NULL, NULL, &err_msg);

    // 4. 查询数据,传入回调处理结果
    const char* select_sql = "SELECT * FROM user;";
    printf("查询结果:\n");
    sqlite3_exec(db, select_sql, callback, NULL, &err_msg);

    // 关闭数据库
    sqlite3_close(db);
    return 0;
}

2. 编译命令(关键:加 -lsqlite3 链接库)

bash 复制代码
# -lsqlite3 链接sqlite动态库,不加会报函数未定义
gcc test_sql.c -o test_sql -lsqlite3

3. 运行程序

bash 复制代码
./test_sql

输出效果:

复制代码
查询结果:
id = 1    name = 小明

五、常见报错解决

  1. sqlite3.h: No such file or directory
    缺少开发库,执行:

    bash 复制代码
    sudo apt install libsqlite3-dev
  2. undefined reference to 'sqlite3_exec'
    编译时忘记加 -lsqlite3,修正编译指令。

  3. 权限不足无法创建db文件
    切换到用户目录执行,或给当前文件夹添加读写权限:

    bash 复制代码
    chmod 777 .