linux c语言操作数据库(连接sqlite数据库)

yizhihongxing

下面是关于连接SQLite数据库的C语言操作攻略的详细讲解。

1.安装SQLite以及其开发库

在Ubuntu和Debian发行版中通过APT包管理器可以很简单地安装SQLite和其开发库(指定版本为3.22.0):

sudo apt-get install sqlite3 libsqlite3-dev=3.22.0-1ubuntu0.3

2.连接SQLite数据库

C语言连接SQLite数据库的步骤如下:

  1. 创建并打开数据库连接
  2. 创建表
  3. 插入数据
  4. 查询数据
  5. 关闭数据库连接

以下是一个连接SQLite数据库的示例程序:

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

int main(int argc, char **argv)
{
    int rc;
    sqlite3 *db;

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

    // 创建表
    char *create_table = "CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);";
    char *err_msg = 0;
    rc = sqlite3_exec(db, create_table, 0, 0, &err_msg);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "SQL error: %s\n", err_msg);
        sqlite3_free(err_msg);
    } else {
        fprintf(stdout, "Table created successfully\n");
    }

    // 插入数据
    char *insert_data = "INSERT INTO COMPANY(ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 ); "
                        "INSERT INTO COMPANY(ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); "
                        "INSERT INTO COMPANY(ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );"
                        "INSERT INTO COMPANY(ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00 );";
    rc = sqlite3_exec(db, insert_data, 0, 0, &err_msg);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "SQL error: %s\n", err_msg);
        sqlite3_free(err_msg);
    } else {
        fprintf(stdout, "Records created successfully\n");
    }

    // 查询数据
    char *sql = "SELECT * FROM COMPANY";
    rc = sqlite3_exec(db, sql, callback, 0, &err_msg);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "SQL error: %s\n", err_msg);
        sqlite3_free(err_msg);
    }

    // 关闭数据库连接
    sqlite3_close(db);

    return 0;
}

该示例程序完成了创建表、插入数据、查询数据等操作。

3.扩展示例

你可以在上述示例程序的基础上进行扩展,例如增加查询数据的回调函数:

int callback(void *data, int argc, char **argv, char **az_col_name)
{
    int i;
    fprintf(stderr, "%s: ", (const char*)data);

    for (i = 0; i < argc; i++) {
        printf("%s = %s\n", az_col_name[i], argv[i] ? argv[i] : "NULL");
    }
    printf("\n");
    return 0;
}

定义回调函数后,可以通过以下方式查询数据:

// 查询数据
char *sql = "SELECT * FROM COMPANY";
rc = sqlite3_exec(db, sql, callback, (void*)data, &err_msg);
if (rc != SQLITE_OK) {
    fprintf(stderr, "SQL error: %s\n", err_msg);
    sqlite3_free(err_msg);
}

在这个示例中,data是一个指向数据的指针,该数据用于在回调函数中使用。

通过以上步骤,你已经学会了如何使用C语言连接SQLite数据库,包括创建并打开数据库连接、创建表、插入数据、查询数据等操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux c语言操作数据库(连接sqlite数据库) - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • vscode内网访问服务器的方法

    下面是详细的“vscode内网访问服务器的方法”的攻略。 什么是vscode内网访问服务器? 通常情况下,我们的电脑和服务器一般都处于同一个局域网,如果我们直接在vscode上连接服务器,即使服务器开了对外映射的端口,也无法直接连接,这就是内网访问。 解决方法 要解决这个问题,我们可以通过在本地电脑与服务器之间建立一个SSH隧道,来实现内网访问。下面我们将具…

    database 2023年5月22日
    00
  • oracle 11g 设置用户密码大小写敏感测试

    Oracle 11g 设置用户密码大小写敏感测试攻略 一、背景 Oracle数据库是一款功能强大的关系型数据库,其安全性得到了广泛的认可。在Oracle数据库中,设置用户密码大小写敏感需要开启Case Sensitive参数。本文将为您介绍如何开启Case Sensitive参数,并进行简单的测试。 二、设置用户密码大小写敏感 1. 连接Oracle数据库 …

    database 2023年5月22日
    00
  • Jedis连接工具 和 SpringBoot整合Redis

    引用学习:https://space.bilibili.com/95256449/ Jedis连接工具 什么是Jedis? 它是官方推荐的Java连接开发工具!使用Java操作 Redis中间件!如果你使用java操作 Redis ,那么要对 jedis 十分的熟悉! 测试 在本地主机进行测试 1、打开 Redis 服务 2、新建maven项目,导入依赖 &…

    Redis 2023年4月13日
    00
  • Linux内核私闯进程地址空间并修改进程内存的方法

    Linux内核可以通过内核模块的方式私闯进程地址空间并修改进程内存。下面是私闯进程地址空间并修改进程内存的详细攻略。 1. 编写加载内核模块的代码 写一个加载内核模块的代码,代码中需要调用 module_init 和 module_exit 分别来注册模块的初始化函数和退出函数。 #include <linux/init.h> #include …

    database 2023年5月22日
    00
  • PHP回调函数简单用法示例

    下面是关于“PHP回调函数简单用法示例”的完整攻略: 什么是回调函数? 回调函数是指可以被其他函数调用的函数。它们通常用于当某个事件完成后自动执行某些动作。 PHP中回调函数的使用方法 在PHP中,回调函数通常作为参数传递给另一个函数,并在适当的时候被调用。下面是一个简单的示例: function array_walk_custom($arr, $callb…

    database 2023年5月22日
    00
  • mysql 5.7.13 安装配置方法图文教程(win10 64位)

    MySQL 5.7.13 安装配置方法图文教程(win10 64位) MySQL是一款非常流行的关系型数据库管理系统,它可以用来存储、管理和查询大量数据。本教程将介绍如何在Windows 10 64位系统中安装和配置MySQL 5.7.13。 步骤一:下载MySQL安装文件 在官方网站下载MySQL 5.7.13的安装包。 https://dev.mysql…

    database 2023年5月22日
    00
  • redis三种分区方案

    参考地址:http://redis.cn/topics/partitioning.html   不同的分区实现方案 分区可以在程序的不同层次实现。 客户端分区就是在客户端就已经决定数据会被存储到哪个redis节点或者从哪个redis节点读取。大多数客户端已经实现了客户端分区。 代理分区 意味着客户端将请求发送给代理,然后代理决定去哪个节点写数据或者读数据。代…

    Redis 2023年4月13日
    00
  • 用SQL实现统计报表中的”小计”与”合计”的方法详解

    下面是使用SQL实现统计报表中的”小计”与”合计”的方法详解: 为什么需要小计和合计? 在统计报表中,通常需要按照某个分类字段(如部门、时间、地区等)进行汇总,同时还需要在每个分类下计算小计和整个报表的合计。小计是指每个分类下的汇总值,合计是指整个报表的汇总值。这样做可以使数据更加清晰明了,方便读者快速了解各项数据的变化趋势和关键指标。 如何使用SQL实现小…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部