当前位置: 首页 > news >正文

查询、插入、更新、删除数据的SQL语句(SQLite)

以下以SQLite数据库为例,展示在C++中使用SQLite库来执行查询、插入、更新和删除数据的操作示例代码。

 

首先确保你已经安装了SQLite库,并且在C++项目中包含了相关的头文件。

 

 

#include <iostream>

#include <sqlite3.h>

#include <string>

 

// 回调函数,用于查询结果处理

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::cout << std::endl;

    return 0;

}

 

int main() {

    sqlite3 *db;

    char *zErrMsg = 0;

    int rc;

 

    // 打开数据库

    rc = sqlite3_open("test.db", &db);

    if (rc) {

        std::cerr << "Can't open database: " << sqlite3_errmsg(db) << std::endl;

        return(0);

    } else {

        std::cout << "Opened database successfully" << std::endl;

    }

 

    // 创建表

    const char *sql = "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);";

    rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);

    if (rc != SQLITE_OK) {

        std::cerr << "SQL error: " << zErrMsg << std::endl;

        sqlite3_free(zErrMsg);

    } else {

        std::cout << "Table created successfully" << std::endl;

    }

 

    // 插入数据

    sql = "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 ); ";

    rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);

    if (rc != SQLITE_OK) {

        std::cerr << "SQL error: " << zErrMsg << std::endl;

        sqlite3_free(zErrMsg);

    } else {

        std::cout << "Records created successfully" << std::endl;

    }

 

    // 查询数据

    sql = "SELECT * from COMPANY;";

    rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);

    if (rc != SQLITE_OK) {

        std::cerr << "SQL error: " << zErrMsg << std::endl;

        sqlite3_free(zErrMsg);

    } else {

        std::cout << "Operation done successfully" << std::endl;

    }

 

    // 更新数据

    sql = "UPDATE COMPANY set SALARY = 25000.00 where ID = 1;";

    rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);

    if (rc != SQLITE_OK) {

        std::cerr << "SQL error: " << zErrMsg << std::endl;

        sqlite3_free(zErrMsg);

    } else {

        std::cout << "Record updated successfully" << std::endl;

    }

 

    // 再次查询数据,查看更新结果

    sql = "SELECT * from COMPANY;";

    rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);

    if (rc != SQLITE_OK) {

        std::cerr << "SQL error: " << zErrMsg << std::endl;

        sqlite3_free(zErrMsg);

    } else {

        std::cout << "Operation done successfully" << std::endl;

    }

 

    // 删除数据

    sql = "DELETE from COMPANY where ID = 2;";

    rc = sqlite3_exec(db, sql, 0, 0, &zErrMsg);

    if (rc != SQLITE_OK) {

        std::cerr << "SQL error: " << zErrMsg << std::endl;

        sqlite3_free(zErrMsg);

    } else {

        std::cout << "Record deleted successfully" << std::endl;

    }

 

    // 再次查询数据,查看删除结果

    sql = "SELECT * from COMPANY;";

    rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);

    if (rc != SQLITE_OK) {

        std::cerr << "SQL error: " << zErrMsg << std::endl;

        sqlite3_free(zErrMsg);

    } else {

        std::cout << "Operation done successfully" << std::endl;

    }

 

    // 关闭数据库

    sqlite3_close(db);

    return 0;

}

 

 

上述代码实现了以下功能:

 

1. 打开SQLite数据库。

 

2. 创建一个名为  COMPANY  的表。

 

3. 向表中插入多条记录。

 

4. 查询表中的所有记录并输出结果。

 

5. 更新表中一条记录的  SALARY  字段。

 

6. 再次查询表中所有记录,查看更新结果。

 

7. 删除表中一条记录。

 

8. 最后再次查询表中所有记录,查看删除结果。

 

9. 关闭数据库连接。

 

 

相关文章:

  • Ceph集群部署步骤
  • Python---数据分析(Pandas十一:二维数组DataFrame统计计算二)
  • 《AI大模型趣味实战 》第8集:多端适配 个人新闻头条 基于大模型和RSS聚合打造个人新闻电台(Flask WEB版) 2
  • 开源AI大模型、AI智能名片与S2B2C商城小程序源码:实体店引流的破局之道
  • 指针,数组 易混题解析(一)
  • 【STM32】SPI通信外设硬件SPI读写W25Q64
  • 手动离线安装NextCloud插件
  • ElementUI表格展开属性
  • AI与自媒体的深度融合路径、场景与挑战
  • 从 Java 的 Spring Boot MVC 转向 Go 语言开发的差异变化
  • 华为 SD-WAN 内联隧道原理
  • 使用Python构建去中心化预测市场:从概念到实现
  • 高频面试题(含笔试高频算法整理)基本总结回顾67
  • Unity中MonoBehaviour的生命周期详解
  • PyTorch核心基础知识点(一)
  • numpy学习笔记9:numpy的广播机制详细解释
  • 吴恩达机器学习笔记复盘(九)逻辑回归模型概述
  • 人工智能 - 在 Spring Boot 中调用 AnythingLLM+DeepSeek 的知识库获取消息接口
  • 大模型开发(六):LoRA项目——新媒体评论智能分类与信息抽取系统
  • 『 C++ 』多线程同步:条件变量及其接口的应用实践
  • 中国中古史集刊高质量发展论坛暨《唐史论丛》创刊四十周年纪念会召开
  • 上海如何为街镇营商环境赋能?送政策、配资源、解难题、强活力
  • 首批18位!苏联籍抗日航空英烈信息更新
  • 深圳下调公积金利率,209万纯公积金贷款总利息减少9.94万
  • 百济首次实现季度营业利润扭亏,泽布替尼销售额近57亿元
  • 高进华“控股”后首份年报出炉,史丹利账上可动资金大幅缩水