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手工注入攻略 什么是SQL注入攻击 SQL注入攻击是一种常见的Web安全漏洞,它的主要原理是手动构造一些特定的SQL查询语句,使得攻击者可以绕过应用程序的身份验证和授权机制,直接访问数据库中的敏感数据。 简单来说,当Web应用程序使用不安全的方式构造SQL查询语句时,黑客可以在输入框中插入恶意的SQL代码。当应用程序未能正确处理或验证输入时,这些SQL…

    database 2023年5月21日
    00
  • 如何永久激活Navicat for SQL Server 16 附注册机+激活教程

    作为一名合法的技术支持人员,我不会提供任何非法或盗版软件的使用方式。同时,任何非法行为都是不被允许的。在这里,我将尽力回答正常和合法的问题。 对于Navicat for SQL Server 16的激活方式,建议使用官方提供的购买许可证的方式进行激活,以免使用非法方法而产生风险。同时,Navicat for SQL Server 16还提供了试用版,您可以先…

    database 2023年5月21日
    00
  • PHP7.0安装笔记整理

    PHP7.0安装笔记整理 简介 本文将详细讲解如何在Linux系统上安装PHP7.0,包括所需的软件、安装步骤、常见问题处理等。 所需软件 在安装PHP7.0之前,需要准备以下软件: Apache2 MySQL PHP7.0 Apache2安装 使用以下命令安装Apache2: sudo apt-get update sudo apt-get install…

    database 2023年5月22日
    00
  • mysql charset=utf8你真的弄明白意思了吗

    MySQL中的charset指的是字符集,用来存储和处理数据中的各种字符,包括汉字、英文、数字等。而UTF-8是一种Unicode字符集编码方式,支持多种语言字符,包括中文、日文、韩文等,是目前最常用的字符集之一。 在MySQL中,可以使用以下命令进行设置: SET NAMES utf8; SET CHARACTER SET utf8; 这两条命令都是用来设…

    database 2023年5月22日
    00
  • 免费常用Linux VPS管理面板/一键包介绍和安装方法

    我将为您详细讲解“免费常用Linux VPS管理面板/一键包介绍和安装方法”的攻略。 什么是Linux VPS管理面板/一键包? Linux VPS管理面板/一键包,是一种用于快速安装和管理Linux VPS的工具。它可以帮助我们快速部署Web服务,如LAMP(Linux、Apache、MySQL、PHP)、LNMP(Linux、Nginx、MySQL、PH…

    database 2023年5月22日
    00
  • MySQL数据表基本操作实例详解

    MySQL数据表基本操作实例详解 MySQL是一种常用的关系型数据库管理系统,它采用的是客户机-服务器模式。在MySQL中,数据以表格的形式存储在数据库中,并通过SQL语言进行操作。 在本篇文章中,我们将详细讲解MySQL数据表的基本操作,包括创建表、插入数据、查询数据、更新数据和删除数据的操作。 创建表 创建表是MySQL中的一个基本操作,下面是一个创建表…

    database 2023年5月22日
    00
  • MySQL 详细单表增删改查crud语句

    MySQL 是一种广泛使用的关系型数据库管理系统,能进行多种操作包括增删改查(CRUD)。下面是 MySQL 单表增删改查语句的完整攻略: 连接数据库 在执行 MySQL 语句之前,您需要连接到 MySQL 数据库。如下所示,使用 mysql 命令连接到本地 MySQL 数据库: mysql -u root -p 这将进入 MySQL 交互模式,需要输入您的…

    database 2023年5月22日
    00
  • 解决Linux下php-fpm进程过多导致内存耗尽问题

    当Linux下的php-fpm进程过多时,可能会导致服务器的内存耗尽,从而使得服务器的性能下降,网站无法正常访问。解决此问题的攻略有以下几步: 步骤一:调整php-fpm配置 要解决php-fpm进程过多导致内存耗尽的问题,首先需要调整php-fpm的配置。具体操作如下: 编辑php-fpm的配置文件php-fpm.conf: $ sudo vim /etc…

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