📜  sqlite woth cmake - SQL (1)

📅  最后修改于: 2023-12-03 15:20:18.240000             🧑  作者: Mango

SQLite with CMake - SQL

简介

本文将介绍如何在使用CMake构建的项目中集成SQLite,以及如何使用SQLite进行SQL数据库操作。SQLite是一种嵌入式关系数据库管理系统,它提供了简单且易于使用的SQL接口,适用于各种规模的应用程序。

集成SQLite到CMake项目
  1. 首先,在CMakeLists.txt文件中添加以下行来定义要使用的SQLite库:
find_package(SQLite3 REQUIRED)
  1. 接下来,使用以下命令将SQLite库链接到项目中的目标:
target_link_libraries(your_target_name SQLite::SQLite3)
  1. 确保SQLite库已正确安装在系统中,以便在构建项目时可以找到库文件。
执行SQL语句

可以使用SQLite提供的API执行SQL语句。以下是一个简单的例子:

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

int main() {
    sqlite3 *db;
    int rc;
    char *errMsg;

    rc = sqlite3_open(":memory:", &db);
    if (rc != SQLITE_OK) {
        std::cerr << "Cannot open database: " << sqlite3_errmsg(db) << std::endl;
        return rc;
    }

    const char *sql = "CREATE TABLE employees (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);";
    rc = sqlite3_exec(db, sql, nullptr, nullptr, &errMsg);
    if (rc != SQLITE_OK) {
        std::cerr << "SQL error: " << errMsg << std::endl;
        sqlite3_free(errMsg);
    } else {
        std::cout << "Table created successfully" << std::endl;
    }

    sqlite3_close(db);
    return 0;
}

在上面的示例中,我们打开一个内存数据库,并执行了创建表的SQL语句。您可以根据需要执行其他SQL操作,例如插入、查询或更新数据。

使用SQLite API进行CRUD操作

SQLite提供了一套API来执行CRUD(创建、读取、更新、删除)操作。以下是一个使用SQLite API进行CRUD操作的简单示例:

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

int main() {
    sqlite3 *db;
    int rc;
    char *errMsg;

    rc = sqlite3_open(":memory:", &db);
    if (rc != SQLITE_OK) {
        std::cerr << "Cannot open database: " << sqlite3_errmsg(db) << std::endl;
        return rc;
    }

    const char *sql = "CREATE TABLE employees (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);";
    rc = sqlite3_exec(db, sql, nullptr, nullptr, &errMsg);
    if (rc != SQLITE_OK) {
        std::cerr << "SQL error: " << errMsg << std::endl;
        sqlite3_free(errMsg);
        sqlite3_close(db);
        return rc;
    } else {
        std::cout << "Table created successfully" << std::endl;
    }

    // 插入数据
    sql = "INSERT INTO employees (id, name, age) VALUES (1, 'John Doe', 30);";
    rc = sqlite3_exec(db, sql, nullptr, nullptr, &errMsg);
    if (rc != SQLITE_OK) {
        std::cerr << "SQL error: " << errMsg << std::endl;
        sqlite3_free(errMsg);
    } else {
        std::cout << "Record inserted successfully" << std::endl;
    }

    // 查询数据
    sql = "SELECT * FROM employees;";
    rc = sqlite3_exec(db, sql, [](void *data, int columnCount, char **columnValues, char **columnName) -> int {
        for (int i = 0; i < columnCount; ++i) {
            std::cout << columnName[i] << ": " << columnValues[i] << std::endl;
        }
        return 0;
    }, nullptr, &errMsg);
    if (rc != SQLITE_OK) {
        std::cerr << "SQL error: " << errMsg << std::endl;
        sqlite3_free(errMsg);
    }

    sqlite3_close(db);
    return 0;
}

在上面的示例中,我们首先创建了一个名为"employees"的表,然后插入了一条记录。最后,我们查询了表中的所有数据,并打印出每一列的名称和值。

总结

通过在CMake项目中集成SQLite并使用SQLite API执行SQL操作,您可以方便地使用SQLite作为嵌入式数据库管理系统。以上示例提供了一个简单的入门指南,您可以根据需要进行扩展和修改。希望本文对您理解如何在CMake项目中使用SQLite提供了帮助。