C++中SQLite数据库操作实例:查询、增加、修改、删除一网打尽

这篇具有很好参考价值的文章主要介绍了C++中SQLite数据库操作实例:查询、增加、修改、删除一网打尽。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C++中SQLite数据库操作实例:查询、增加、修改、删除一网打尽

 

在C++中使用SQLite数据库需要使用SQLite的C/C++接口。以下是一个简单的示例,演示如何在C++中使用SQLite,并提供了常见的查询、增加、修改和删除功能。为了使用SQLite,你需要下载SQLite的C/C++接口,并链接到你的项目中。

首先,确保你已经下载了SQLite的C/C++接口,然后将头文件和库文件包含到你的项目中。

然后,创建一个C++源文件,例如SQLiteExample.cpp,并添加以下代码:

#include <iostream>
#include <sqlite3.h>

// 创建数据库连接
sqlite3* OpenDatabase(const char* dbFilePath) {
    sqlite3* db;
    
    // 打开数据库
    if (sqlite3_open(dbFilePath, &db) != SQLITE_OK) {
        std::cerr << "Error opening database." << std::endl;
        return nullptr;
    }

    return db;
}

// 关闭数据库连接
void CloseDatabase(sqlite3* db) {
    sqlite3_close(db);
}

// 创建表
void CreateTable(sqlite3* db) {
    const char* createTableSQL = "CREATE TABLE IF NOT EXISTS Users (Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT, Age INTEGER);";

    if (sqlite3_exec(db, createTableSQL, nullptr, nullptr, nullptr) != SQLITE_OK) {
        std::cerr << "Error creating table." << std::endl;
    } else {
        std::cout << "Table created or already exists." << std::endl;
    }
}

// 插入数据
void InsertData(sqlite3* db, const char* name, int age) {
    const char* insertDataSQL = "INSERT INTO Users (Name, Age) VALUES (?, ?);";
    sqlite3_stmt* statement;

    if (sqlite3_prepare_v2(db, insertDataSQL, -1, &statement, nullptr) == SQLITE_OK) {
        // 绑定参数
        sqlite3_bind_text(statement, 1, name, -1, SQLITE_STATIC);
        sqlite3_bind_int(statement, 2, age);

        // 执行语句
        if (sqlite3_step(statement) != SQLITE_DONE) {
            std::cerr << "Error inserting data." << std::endl;
        } else {
            std::cout << "Data inserted." << std::endl;
        }

        // 释放资源
        sqlite3_finalize(statement);
    }
}

// 查询数据
void QueryData(sqlite3* db) {
    const char* queryDataSQL = "SELECT * FROM Users;";
    sqlite3_stmt* statement;

    if (sqlite3_prepare_v2(db, queryDataSQL, -1, &statement, nullptr) == SQLITE_OK) {
        std::cout << "Id\tName\tAge" << std::endl;

        // 遍历结果集
        while (sqlite3_step(statement) == SQLITE_ROW) {
            std::cout << sqlite3_column_int(statement, 0) << "\t" 
                      << sqlite3_column_text(statement, 1) << "\t" 
                      << sqlite3_column_int(statement, 2) << std::endl;
        }

        // 释放资源
        sqlite3_finalize(statement);
    }
}

// 更新数据
void UpdateData(sqlite3* db, int id, const char* name, int age) {
    const char* updateDataSQL = "UPDATE Users SET Name=?, Age=? WHERE Id=?;";
    sqlite3_stmt* statement;

    if (sqlite3_prepare_v2(db, updateDataSQL, -1, &statement, nullptr) == SQLITE_OK) {
        // 绑定参数
        sqlite3_bind_text(statement, 1, name, -1, SQLITE_STATIC);
        sqlite3_bind_int(statement, 2, age);
        sqlite3_bind_int(statement, 3, id);

        // 执行语句
        if (sqlite3_step(statement) != SQLITE_DONE) {
            std::cerr << "Error updating data." << std::endl;
        } else {
            std::cout << "Data updated." << std::endl;
        }

        // 释放资源
        sqlite3_finalize(statement);
    }
}

// 删除数据
void DeleteData(sqlite3* db, int id) {
    const char* deleteDataSQL = "DELETE FROM Users WHERE Id=?;";
    sqlite3_stmt* statement;

    if (sqlite3_prepare_v2(db, deleteDataSQL, -1, &statement, nullptr) == SQLITE_OK) {
        // 绑定参数
        sqlite3_bind_int(statement, 1, id);

        // 执行语句
        if (sqlite3_step(statement) != SQLITE_DONE) {
            std::cerr << "Error deleting data." << std::endl;
        } else {
            std::cout << "Data deleted." << std::endl;
        }

        // 释放资源
        sqlite3_finalize(statement);
    }
}

int main() {
    // 指定数据库文件路径
    const char* dbFilePath = "sample.db";

    // 创建数据库连接
    sqlite3* db = OpenDatabase(dbFilePath);

    if (db) {
        // 创建表
        CreateTable(db);

        // 插入数据
        InsertData(db, "John Doe", 30);

        // 查询数据
        QueryData(db);

        // 更新数据
        UpdateData(db, 1, "Updated Name", 35);

        // 查询更新后的数据
        QueryData(db);

        // 删除数据
        DeleteData(db, 1);

        // 查询删除后的数据
        QueryData(db);

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

    return 0;
}

请注意,上述示例假设你已经下载了SQLite的C/C++接口,并且在项目中包含了相关的头文件和库文件。在实际应用中,你需要根据自己的需求修改数据库文件路径和调整连接方式。

 

C++中SQLite数据库操作实例:查询、增加、修改、删除一网打尽文章来源地址https://www.toymoban.com/news/detail-760168.html

到了这里,关于C++中SQLite数据库操作实例:查询、增加、修改、删除一网打尽的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Linux系统聊天室增加数据库sqlite功能实现(08)

    全部掌握后,开始进入本篇。 为了方便编译,现在我们将前面文章的代码结构做如下调整。 最终增加了数据的文件目录如下: clean.sh  用于清除临时文件 gcc.sh  用于编译整个工程 服务端代码放置到chat_server目录下;客户端代码放置到chat_client目录下; 数据库相关代码放在

    2024年02月07日
    浏览(47)
  • Android中SQLite数据库查询详解

    SQLite在线教程网址https://www.yiibai.com/sqlite table :表名。相当于select *** from table语句中的table 。如果是多表联合查询,可以用逗号将两个表名分开。 columns :要查询出来的列名(字段),全部查询就写null。相当于 select *** from table语句中的 ***部分 。如果是查询多个参数,可以用

    2024年01月16日
    浏览(57)
  • 【Jetpack】使用 Room 框架访问 Android 平台 SQLite 数据库 ( 导入依赖 | 定义 Entity 实体类 | 定义 Dao 数据库访问对象接口 | 定义数据库实例类 )

    对于 Room 框架 来说 , 使用 Java 语言 开发和使用 Kotlin 语言 开发 , 需要在 build.gradle 构建脚本 中进行不同的配置 , 主要有以下两个配置不同 : 应用的插件不同 ; 导入依赖库方式不同 ; 应用插件 应用的插件区别 : 如果使用 Java 语言开发 , 只需要导入 android 插件 ; 如果使用 Kotli

    2024年02月05日
    浏览(62)
  • Android——Sqlite数据库——实现联系人信息的添加、查询、修改以及删除功能

        掌握常用布局和基本控件的使用方法     掌握界面图像显示的使用方法     掌握SQLite数据库的创建和基本操作方法 通过线性布局和相对布局来搭建Activity界面,在MainActivity中编写逻辑代码,运行程序,输入两条联系人信息分别点击“添加”“查询”“修改”“

    2024年02月07日
    浏览(48)
  • 5、QT中SQLite数据库的操作

    执行数据库操作的类: SQLite3的基础教程 ①、创建数据库的链接对象: ②、使用数据库驱动 ③、设置数据库的名称(创建一个数据库) ④、创建一张表 例子: 例子: ①、遍历所有数据并保存 ②、对比数据 例子: 查询数据的时候,必须要先把遍历的数据保存在sqlQuery类中

    2024年02月09日
    浏览(49)
  • SQLite实战系列——如何优雅地操作数据库?

    在上一篇《SQLite学习(一)SQLite介绍、历史和下载启动方式》 中,讲解了 SQLite的历史,和其下载安装的方式,在本篇博客将讲解 SQLite 中,对数据库的操作。 同学们将学习到: SQLite 创建数据库 SQLite 删除数据库/

    2024年02月03日
    浏览(45)
  • 【C++】开源:sqlite3数据库配置使用

    😏 ★,° :.☆( ̄▽ ̄)/$: .°★ 😏 这篇文章主要介绍sqlite3数据库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路🥞 项目Github地址: https://github.com/sqlite/sqlite SQLite 是一种嵌入式

    2024年02月14日
    浏览(57)
  • javaweb实验:JSP+JDBC综合实训_数据库记录的增加、查询

    JSP是一种基于Java的Web编程语言,可以生成动态的网页内容。JDBC是Java数据库连接的缩写,是一种用于访问数据库的标准API。通过使用JSP和JDBC,可以实现在网页上对数据库的操作,如增加、查询、修改和删除数据。本实验的目的是掌握使用JSP和JDBC完成数据库操作的基本方法,

    2024年02月07日
    浏览(55)
  • QT-sql操作(sqlite数据库文件)

        #include SqlDriver 如名称,数据库驱动。 hasFeature : 检查驱动是否支持特定功能,如事务、批处理等。 isQuerySize : 驱动是否支持  QSqlQuery::size  函数。 open 、 close : 打开和关闭数据库连接。 isOpen : 判断数据库连接是否处于打开状态。 commitTransaction 、 rollbackTransaction :

    2024年02月04日
    浏览(53)
  • SQLITE_BUSY 是指 SQLite 数据库返回的错误码,表示数据库正在被其他进程或线程使用,因此当前操作无法完成。

    当多个进程或线程同时尝试对同一个 SQLite 数据库进行写操作时,就可能出现 SQLITE_BUSY 错误。这是为了确保数据库的数据完整性和一致性而设计的并发控制机制。 如果你在使用 SQLite 时遇到 SQLITE_BUSY 错误,可以考虑以下解决方法: 重试操作:在捕获到 SQLITE_BUSY 错误后,可以

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包