c 嵌入式sql SQLite 应用举例

当涉及到C嵌入式SQL与SQLite的应用时,以下是一个清晰的示例,用于说明如何在C程序中嵌入SQLite数据库并执行基本的SQL操作。

1. 准备工作

  • 首先,确保你已经从SQLite的官方网站下载了适用于你的操作系统的SQLite库(如sqlite3.hsqlite3.dlllibsqlite3.so等)。
  • 在你的C项目中,配置好SQLite的头文件和库文件路径,以便在编译时能够正确链接。

2. 示例代码

下面是一个简单的C程序,它展示了如何连接到SQLite数据库、创建一个表、插入数据、查询数据以及断开连接。

 
#include <stdio.h>  
#include <sqlite3.h>  
  
int main() {  
    sqlite3 *db;  
    char *err_msg = 0;  
    int rc;  
  
    // 1. 打开(或创建)数据库  
    rc = sqlite3_open(":memory:", &db); // 使用内存数据库,或者可以替换为文件路径  
    if (rc) {  
        fprintf(stderr, "无法打开数据库: %s\n", sqlite3_errmsg(db));  
        return 1;  
    }  
  
    // 2. 执行SQL语句创建表  
    const char *sql = "CREATE TABLE IF NOT EXISTS Students(Id INTEGER PRIMARY KEY, Name TEXT, Age INTEGER);";  
    rc = sqlite3_exec(db, sql, 0, 0, &err_msg);  
    if (rc != SQLITE_OK) {  
        fprintf(stderr, "SQL错误: %s\n", err_msg);  
        sqlite3_free(err_msg);  
        sqlite3_close(db);  
        return 1;  
    }  
  
    // 3. 插入数据  
    sql = "INSERT INTO Students(Name, Age) VALUES('张三', 20);";  
    rc = sqlite3_exec(db, sql, 0, 0, &err_msg);  
    if (rc != SQLITE_OK) {  
        fprintf(stderr, "SQL错误: %s\n", err_msg);  
        sqlite3_free(err_msg);  
        sqlite3_close(db);  
        return 1;  
    }  
  
    // 4. 查询数据  
    sql = "SELECT * FROM Students;";  
    sqlite3_stmt *stmt;  
    rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0);  
    if (rc != SQLITE_OK) {  
        fprintf(stderr, "准备SQL语句错误: %s\n", sqlite3_errmsg(db));  
        sqlite3_close(db);  
        return 1;  
    }  
  
    // 遍历结果集  
    while (sqlite3_step(stmt) == SQLITE_ROW) {  
        int id = sqlite3_column_int(stmt, 0);  
        const unsigned char *name = sqlite3_column_text(stmt, 1);  
        int age = sqlite3_column_int(stmt, 2);  
        printf("ID: %d, Name: %s, Age: %d\n", id, name, age);  
    }  
  
    // 释放预编译的SQL语句  
    sqlite3_finalize(stmt);  
  
    // 5. 关闭数据库连接  
    sqlite3_close(db);  
  
    return 0;  
}

3. 编译和运行

  • 使用C编译器(如gcc)编译你的程序,并链接SQLite库。
  • 运行编译后的程序,观察输出结果。

4. 注意事项

  • 在实际应用中,你可能需要处理更复杂的SQL语句和错误情况。
  • 示例中使用了内存数据库(:memory:),这意味着数据库只存在于程序运行期间。如果你需要持久化存储,可以提供一个文件路径作为sqlite3_open函数的参数。
  • SQLite支持多种数据类型(如INTEGER、TEXT、REAL、BLOB等),并且提供了丰富的SQL函数和操作符。你可以根据自己的需求使用它们。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值