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

  简介:在C++中使用SQLite数据库需要使用SQLite的C/C++接口。以下是一个简单的示例 […]

 

简介:在C++中使用SQLite数据库需要使用SQLite的C/C++接口。以下是一个简单的示例,演示如何在C++中使用SQLite,并提供了常见的查询、增加、修改和删除功能。为了使用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 << "IdtNametAge" << 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++接口,并且在项目中包含了相关的头文件和库文件。在实际应用中,你需要根据自己的需求修改数据库文件路径和调整连接方式。

转自: https://www.cnblogs.com/hanbing81868164/p/17909101.html

 

版权声明
文章标题:C++操作SQLite数据库操作实例:查询、增加、修改、删除
文章链接:https://blog.chiyuba.com/houduanjishu/619.html
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,转载或引用请注明出处。
温馨提示:本文最后更新于 2025年7月12日,部分内容可能存在时效性,请注意甄别。

相关推荐

更多教程
html中a标签rel=”nofollow noopener noreferrer”含义 后端技术 html中a标签rel=”nofollow noopener noreferrer”含义

  超链接 target=”...

2 浏览
post中body类型raw form/data x-www-form-urlencoded 区别 后端技术 post中body类型raw form/data x-www-form-urlencoded 区别

  简介:在 HTTP 请求中...

5 浏览
8、ThinkPHP6实战开发高大上企业站(TP6)之常用的命令 php 8、ThinkPHP6实战开发高大上企业站(TP6)之常用的命令

前言 今天给大家带来一些常用的php命令...

4 浏览

评论