首页 > 数据库 >Clion创建项目sqlite数据库

Clion创建项目sqlite数据库

时间:2024-12-26 11:31:25浏览次数:3  
标签:文件 sqlite 创建 数据库 MinGW sqlite3 main Clion

1.创建工程并运行

(1)新建——project,选择工程文件夹,创建工程

image-20241226104938570

(2)进入界面,等待项目启动,显示main.cpp主文件

image-20241226105011680

(3)配置编译环境

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

image-20241226105450116

(4)运行main.cpp文件即可

image-20241226105043555

2.连接Sqlite数据库

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

image-20241226112441040

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

image-20241226110140287

(3)修改CMakeLists.txt文件,添加编译选项及连接文件

image-20241226111546797

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数据库

image-20241226110557142

(5)使用Navicate监视刚才创建的Sqlite数据库

image-20241226110929849

(6)编写代码:数据库连接、表创建、数据表读写
#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;
}

image-20241226111357560

(7)数据库查询

image-20241226111627794

标签:文件,sqlite,创建,数据库,MinGW,sqlite3,main,Clion
From: https://www.cnblogs.com/DQ-MINE/p/18632350

相关文章

  • Java用本地字典数据库实现英语单词翻译
    Java用本地字典数据库实现英语单词翻译依赖的准备<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="h......
  • 数据库原理与应用期末试卷(2)SCAU
    华南农业大学期末考试试卷(A卷)2020-2021学年第一学期            考试科目:数据库系统(双语)考试类型:闭卷             考试时间:120 分钟学号              姓名               年级专业          ......
  • 3种常见的数据库迁移工具对比
    3种常见的数据库迁移工具对比神州数码云基地​已认证账号​关注2人赞同了该文章之前在项目中,收到一个紧急需求,要把数据从 PostgreSQL 迁移到 TiDB 中。由于时间紧任务重,来不及调研高效的方式,直接使用了Navicat内置的功能,把数据从PostgreSQL迁移到......
  • redis中,msyql数据库读写分离搭建
    一.mysql读写分离:缓解主服务器的压力 1.概念:主服务器写数据,从服务器读数据 2.实现方法: 客户端分离:开发手动分离地址 服务端分离:数据库与应用之间加一个中间件,分离读写请求 mysql-proxy,mysql-route,maxscale amoeba,cobar,mycat2 atlas,k......
  • GuassDB数据库的GRANT & REVOKE
    ​目录一、GaussDB的权限概述二、GaussDB权限设计建议三、GaussDB的GRANT命令1.功能说明2.注意事项3.常用语法四、GaussDB的REVOKE命令用法1.功能说明2.注意事项3.常用语法五、GaussDB示例1.GRANT语句示例2.REVOKE语句示例一、GaussDB的权限概述在数据库中,对象......
  • GaussDB 数据库实验环境搭建指导
    @目录简介内容描述实验环境说明1GaussDB数据库购买1.1实验介绍1.1.1关于本实验1.1.2实验目的1.2购买GaussDB数据库1.2.1登录华为云1.2.2购买华为云GaussDB数据库简介本指导书适用于在华为云部署购买GaussDB数据库,通过该指导书可以顺利完成GaussDB数据库在华为云的购买。......
  • 4.2 数据库分组查询
    1、为什么要分组上一节课我们学习了聚合函数,默认统计的是全表范围的数据。配合上where子句就能缩小统计的范围了,但是这并不能满足我们的要求。比如说我现在想查询每个部门的平均底薪是多少钱,这个就需要对员工记录,按照部门编号去分组了。比如说10部门的员工分成一组,20部门的员......
  • centos 自动备份mysql数据库
    创建自动备份脚本创建文件mysql_auth_back.sh#!/bin/bash#source/etc/profile#以下配置信息需要根据自己情况进行编辑DB_HOST="127.0.0.1"......
  • 崩溃列表数据库查询(可供参考)
    首先去https://weikezhijia.feishu.cn/sheets/BIvxsKZhHhzpC6tDyoLcPE50n4d?sheet=9ikXjx看库中导出指标,然后可以查到是rum_error表,然后去ors_rum_test服务器,ors_rum_test数据库,rum_error表去查询,结合点击全部按钮后查看F12 然后查看preView里的字段,结合着去查rum_error表,比......
  • 数据库基础
    1、数据库概念一个存储数据的地方数据按照分类存储到不同的表简单的电子表格非常高效快速查询其中的数据2、为什么学习数据库关注页面操作,还需要检查数据库中的数据是否正确出现bug时,能够定位到问题原因造数据,修改数据-测试环境3、数据库类型关系型数......