问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Clion创建项目并连接SQLite数据库的完整教程

创作时间:
作者:
@小白创作中心

Clion创建项目并连接SQLite数据库的完整教程

引用
1
来源
1.
https://www.cnblogs.com/DQ-MINE/p/18632350

本文将详细介绍如何在Clion中创建项目并连接SQLite数据库。从创建工程、配置编译环境到编写代码,每个步骤都配有详细的说明和示例,适合初学者学习。

1. 创建工程并运行

(1)新建项目

选择"File" -> "New Project",选择工程文件夹,创建工程。

(2)进入界面

等待项目启动,显示main.cpp主文件。

(3)配置编译环境

默认生成了main.cpp文件,但是我们不能运行。我们缺少编译环境,点击"File" -> "Settings"打开设置,搜索工具链,发现Clion提供的编译环境有几种MinGW,CygWin,Visual studio等。我此处选择的时MinGW,因为我的安装了MinGW,默认选择了MinGW,如果你没有下载的话,后面的位置原先有个download,点击就可以下载了。安装好之后,然后再Environment右侧选择mingw-w64的位置即可。

(4)运行main.cpp文件

配置完成后,即可运行main.cpp文件。

2. 连接SQLite数据库

(1)下载SQLite文件

首先前往SQLite官网下载sqlite3所需文件:SQLite Download Page

(2)解压并添加文件

解压文件,将其中的sqlite3.c和sqlite3.h拷贝到你对应的工程文件夹中。

(3)修改CMakeLists.txt文件

在CMakeLists.txt文件中添加编译选项及连接文件:

cmake_minimum_required(VERSION 3.28)
project(MyDemo)
set(CMAKE_CXX_STANDARD 17)
add_executable(MyDemo main.cpp sqlite3.c)
# 指定包含目录
target_include_directories(MyDemo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})

(4)创建SQLite数据库

在代码中创建SQLite数据库。

(5)使用Navicate监视数据库

使用Navicate等工具监视刚才创建的SQLite数据库。

(6)编写代码:数据库连接、表创建、数据表读写

在main.cpp中编写数据库连接、表创建、数据表读写等操作:

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

// 回调函数用于处理查询结果
static int callback(void* NotUsed, int argc, char** argv, char** azColName) {
    for (int i = 0; i < argc; i++) {
        std::cout << azColName[i] << ": " << (argv[i] ? argv[i] : "NULL") << std::endl;
    }
    std::cout << std::endl;
    return 0;
}

int main() {
    sqlite3* DB;
    char* errorMessage = 0;
    int exit = 0;

    // 打开或创建数据库文件
    exit = sqlite3_open("D:/WorkOther/MyDemo/test.db", &DB);
    // 检查是否成功打开数据库
    if (exit) {
        std::cerr << "Error open DB: " << sqlite3_errmsg(DB) << std::endl;
        return -1;
    } else {
        std::cout << "Opened Database Successfully!" << std::endl;
    }

    // SQL语句:创建表
    const char* sql_create =
        "CREATE TABLE IF NOT EXISTS COMPANY("
        "ID INT PRIMARY KEY NOT NULL,"
        "NAME TEXT NOT NULL,"
        "AGE INT NOT NULL,"
        "ADDRESS CHAR(50),"
        "SALARY REAL);";

    // 执行SQL语句
    exit = sqlite3_exec(DB, sql_create, 0, 0, &errorMessage);
    if (exit != SQLITE_OK) {
        std::cerr << "Error CREATE TABLE: " << errorMessage << std::endl;
        sqlite3_free(errorMessage);
    } else {
        std::cout << "Table created successfully" << std::endl;
    }

    // 插入数据到表中
    const char* sql_insert =
        "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 ); ";

    // 执行SQL语句
    exit = sqlite3_exec(DB, sql_insert, 0, 0, &errorMessage);
    if (exit != SQLITE_OK) {
        std::cerr << "Error INSERT: " << errorMessage << std::endl;
        sqlite3_free(errorMessage);
    } else {
        std::cout << "Records created successfully" << std::endl;
    }

    // 查询表中的数据
    const char* sql_select = "SELECT * FROM COMPANY";
    exit = sqlite3_exec(DB, sql_select, callback, 0, &errorMessage);
    if (exit != SQLITE_OK) {
        std::cerr << "Error SELECT: " << errorMessage << std::endl;
        sqlite3_free(errorMessage);
    } else {
        std::cout << "Operation done successfully" << std::endl;
    }

    // 关闭数据库连接
    sqlite3_close(DB);
    return 0;
}

(7)数据库查询

运行程序,查看数据库查询结果。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号