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

下面是关于连接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日

相关文章

  • SQL 比较特定的日期要素

    SQL 中常见的日期要素包括年、季度、月、周和日。下面我将结合两个实例来讲解如何使用 SQL 处理比较特定的日期要素。 实例1:计算某月的销售额 假设有一张名为 sales 的表,其中记录了公司在不同日期的销售额。我们想要计算某个月的总销售额,并将结果按照日期升序排列。 首先,我们需要使用 DATE_TRUNC 函数将日期截断到月的第一天,然后再对该月份内的…

    database 2023年3月27日
    00
  • sql with as用法详解

    下面是SQL WITH AS用法的详解攻略,内容包括WITH AS的含义、语法、用法、示例等方面。 含义 WITH AS是一种用于创建临时表格的SQL 语句。它可以改善可读性,包含在它中的代码块可以使查询更加优雅清晰。 语法 WITH AS语句由两个部分组成: 第一部分是WITH关键字。后面紧跟着一个或多个定义代表临时表格名称(也叫作查询块)的逗号分隔子句。…

    database 2023年5月21日
    00
  • Oracle CBO几种基本的查询转换详解

    Oracle CBO几种基本的查询转换详解 Oracle CBO是Oracle数据库中的优化器,可以对查询语句进行转换,以便提高查询效率。下面我们介绍几种基本的查询转换方法。 全表扫描转换为索引扫描 当我们使用WHERE子句进行查询时,如果没有使用索引,那么Oracle就会进行全表扫描。但是,如果我们对查询条件中的某一列建立了索引,那么我们可以将全表扫描转换…

    database 2023年5月21日
    00
  • MySQL创建视图(CREATE VIEW)

    MySQL中的视图是一个虚拟表,其内容基于 SELECT 语句定义,可以被用户查询。视图使得我们可以简化复杂的查询和抽象复杂的数据结构,从而提高数据查询和管理的效率。 创建视图的基本语法如下: CREATE VIEW view_name AS SELECT column1, column2, … FROM table WHERE condition; 其…

    MySQL 2023年3月10日
    00
  • CentOS7下mysql 8.0.16 安装配置方法图文教程

    下面就为您详细讲解 “CentOS7下mysql 8.0.16 安装配置方法图文教程”的完整攻略。 安装环境 操作系统:CentOS 7.6.1810 MySQL版本:8.0.16 安装包:mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz 网络环境(访问互联网) 安装步骤 1. 下载MySQL安装包 从MySQL官网 ht…

    database 2023年5月22日
    00
  • Zookeeper如何实现分布式服务配置中心详解

    Zookeeper如何实现分布式服务配置中心详解 什么是Zookeeper Zookeeper是一个典型的分布式数据一致性解决方案,是Google Chubby在开源领域的实现,提供了分布式应用系统的协调服务,如配置维护、命名服务、同步服务、组服务等。 Zookeeper作为服务配置中心的应用 服务配置中心是比较常用的分布式架构中的一部分,它的目的是帮助我们…

    database 2023年5月22日
    00
  • MySQL锁机制/管理(并发锁,行锁,表锁,预加锁,全局锁等等)-转

    百度博客居然无缘无故被封了。。。。。搬家中。。。  转自 MySQL实验室 1. MySQL中并发和隔离控制机制 Meta-data元数据锁:在table cache缓存里实现的,为DDL(Data Definition Language)提供隔离操作。一种特别的meta-data元数据类型,叫Name Lock。(SQL层) 表级table-level数据…

    MySQL 2023年4月13日
    00
  • 详解MySQL插入和查询数据的相关命令及语句使用

    下面是详解MySQL插入和查询数据的相关命令及语句使用的完整攻略: MySQL插入数据的相关命令和语句使用 1. 插入单条数据 插入单条数据,使用 INSERT INTO 命令,要求指定表名和数据列名与值。如下: INSERT INTO employees (name, age, gender, department) VALUES (‘Lucy’, 25,…

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