C++ 使用Poco库操作SQLite数据库

flyfish

文章目录

  • C++ 使用Poco库操作SQLite数据库
    • 数据库插入记录
    • 数据库插入记录方式2
    • 数据库插入记录方式3
    • 更方便的数据库插入记录
    • 创建表的方式
      • 如果表存在,则删除表,再创建新表
      • 如果表不存在则再创建表
    • 查询单个字段
    • 查询限制记录条数
    • 查询多个字段
    • 更新

数据库插入记录

#include <Poco/Data/Session.h>
#include <Poco/Data/SQLite/Connector.h>
#include <vector>
#include <iostream>class Student
{public:std::string name_;int age_;
};
typedef std::vector<Student> Students;int main(int argc, char** argv)
{Students ss;for(int i=0;i <10;i++){Student s;s.name_ = std::to_string(i);s.age_ = i+10;ss.push_back(s);}Poco::Data::SQLite::Connector::registerConnector();Poco::Data::Session session("SQLite", "example.db");session << "DROP TABLE IF EXISTS Student", Poco::Data::Keywords::now;session << "CREATE TABLE Student (Name VARCHAR(30), Age INTEGER(3))", Poco::Data::Keywords::now;for (auto& i :ss){Poco::Data::Statement insert(session);insert << "INSERT INTO Student VALUES(:Name, :Age)",Poco::Data::Keywords::use(i.name_),Poco::Data::Keywords::use(i.age_);insert.execute();}Poco::Data::SQLite::Connector::unregisterConnector();return 0;
}

数据库插入记录方式2

  for (auto& i :ss){Poco::Data::Statement insert(session);insert << "INSERT INTO Student VALUES(:Name, :Age)",Poco::Data::Keywords::use(i.name_),Poco::Data::Keywords::use(i.age_),  Poco::Data::Keywords::now;}

数据库插入记录方式3

for (auto& i :ss)
{Poco::Data::Statement insert(session);insert << "INSERT INTO Student VALUES(?, ?)",Poco::Data::Keywords::use(i.name_),Poco::Data::Keywords::use(i.age_),  Poco::Data::Keywords::now;}

更方便的数据库插入记录

#include <Poco/Data/Session.h>
#include <Poco/Data/SQLite/Connector.h>
#include <vector>
#include <iostream>typedef Poco::Tuple<std::string, int> Student;
typedef std::vector<Student> Students;int main(int argc, char** argv)
{Students ss;for(int i=0;i <10;i++){Student s(std::to_string(i),i+10);ss.push_back(s);}Poco::Data::SQLite::Connector::registerConnector();Poco::Data::Session session("SQLite", "example.db");session << "DROP TABLE IF EXISTS Student", Poco::Data::Keywords::now;session << "CREATE TABLE Student (Name VARCHAR(30), Age INTEGER(3))", Poco::Data::Keywords::now;for (auto& i :ss){Poco::Data::Statement insert(session);insert << "INSERT INTO Student VALUES(?, ?)",Poco::Data::Keywords::use(i),Poco::Data::Keywords::now;}Poco::Data::SQLite::Connector::unregisterConnector();return 0;
}

创建表的方式

如果表存在,则删除表,再创建新表

session << "DROP TABLE IF EXISTS Student", Poco::Data::Keywords::now;
session << "CREATE TABLE Student (Name VARCHAR(30), Age INTEGER(3))", Poco::Data::Keywords::now;

如果表不存在则再创建表

session << "CREATE TABLE IF NOT EXISTS Student (Name VARCHAR(30), Age INTEGER(3))", Poco::Data::Keywords::now;

查询单个字段

std::vector<std::string> names;
session << "SELECT Name FROM Student",Poco::Data::Keywords::into(names),Poco::Data::Keywords::now;for (auto& i : names)std::cout << i << ' ';

查询限制记录条数

std::vector<std::string> names;
session << "SELECT Name FROM Student", Poco::Data::Keywords::into(names), Poco::Data::Keywords::limit(2), Poco::Data::Keywords::now;for (auto& i : names)std::cout << i << '\n';

查询多个字段

Students a;
session << "SELECT * FROM Student", Poco::Data::Keywords::into(a),  Poco::Data::Keywords::now;for (auto& it : a)
{std::cout << "Name: " << it.get<0>() <<", Age: " << it.get<1>() <<std::endl;
}

更新

std::string age = "111";
std::string name = "0";
session << "update Student set Age = ? WHERE Name= ?", Poco::Data::Keywords::use(age),Poco::Data::Keywords::use(name),Poco::Data::Keywords::now;

C++ 使用Poco库操作SQLite数据库相关推荐

  1. Poco库使用:操作SQLite数据库

    Sqlite是在工程项目中使用比较多的小型数据库.由于其非常小巧且占用资源低,深受开发者喜欢.这里就介绍一下如何通过Poco框架操作SQLite数据库.这里假设你已经完整编译了Poco库,如果还没有编 ...

  2. python读数据库的通信协议是,Python操作SQLite数据库过程解析

    SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统. 不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分.所以主要的通信协 ...

  3. PC软件开发技术之三:C#操作SQLite数据库

    我们在开发应用是经常会需要用到一些数据的存储,存储的方式有多种,使用数据库是一种比较受大家欢迎的方式.但是对于一些小型的应用,如一些移动APP,通常的数据库过于庞大,而轻便的SQLite则能解决这一问 ...

  4. python数据库sqlite3_Python 操作 SQLite 数据库

    本文字数:3808 字 阅读本文大概需要:10 分钟 写在之前 SQLite 是一个小型的关系型数据库,它最大的特点在于不需要单独的服务.零配置.我们在之前讲过的两个数据库,不管是 MySQL 还是 ...

  5. C#操作SQLite数据库

    我们在开发应用是经常会需要用到一些数据的存储,存储的方式有多种,使用数据库是一种比较受大家欢迎的方式.但是对于一些小型的应用,如一些移动APP,通常的数据库过于庞大,而轻便的SQLite则能解决这一问 ...

  6. python数据库操作sqlite_Python3操作SQLite数据库

    Python3操作SQLite数据库 SQLite SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目 ...

  7. python数据存储系列教程——python操作sqlite数据库:连接、增删查改、指令执行

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python操作sqlite数据库 sqlite数据库以.db格式的文件形式存在,所以不需要安装驱动和应用系统,在标准库中也集成了sqlite ...

  8. python对sqlite增删改查_Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】...

    本文实例讲述了python操作SQLite数据库的方法.分享给大家供大家参考,具体如下: SQLite简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的 ...

  9. python操作sqlite数据库

    SQLite数据库是一款轻量级的数据库,无服务器.零配置.事务性的SQL数据库引擎.SQLite是世界上最广泛部署的SQL数据库引擎,而且SQLite的源代码不受版权限制,是小型项目和简单web应用的 ...

最新文章

  1. 图解深度学习(图灵出品)
  2. 一名作曲专业毕业生的安全架构师之路
  3. LevelDB (1)概述
  4. java.lang.Object错误
  5. 记录一下自己的VScode插件
  6. 计算机考试单招考试面试,单招计算机面试题.docx
  7. Nagios 监控 SNMP 温度计
  8. python代码命令行tab补齐_超简python命令行tab一键补全方法
  9. 服务器中W3SVC1文件夹的文件,完美解决IIS 服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'。错误是 '没有注册类别...
  10. win7计算机管理没有用户模块,Win7系统安装“ipx协议”提示“找不到相应的模块”如何解决...
  11. 历年奥斯卡获奖影片(1927—2015)
  12. no properties discovered to create BeanSerializer 问题解决
  13. 手机开发APP整体界面设计工具之墨刀---没用过就知道它很牛掰
  14. 计算机基础与应用说课ppt课件,广东省“XX杯”说课大赛计算机应用基础类一等奖作品:PPT写字动画的制作现场说课课件.ppt...
  15. win7家庭版开机登录画面多了一个管理员的账户名
  16. 副总经理(技术类)+技术总监都做些什么
  17. Android iOS APPUI设计规范实例(详细的UI设计方法)
  18. 直播带货后:提升售后服务、复盘直播数据
  19. android sex games app,Beginning Android Games 2nd Edition
  20. Codeforces 91A Newspaper Headline

热门文章

  1. 健康——每日饮水量建议
  2. opencv读取视频有延迟解决方法
  3. nvme分区选mbr还是guid_win7安装系统硬盘模式mbr和guid选哪个?
  4. laravel entrust权限系统,管理角色添加删除用户
  5. 9.4 网易互娱客户端笔试
  6. 一位月薪1.2w的北漂程序员真实生活!
  7. 《死亡邮件》评怀疑这是QQ邮箱的推广电影
  8. Android旅游自助项目之订票系统订票功能实现
  9. 电竞Dota2数据API接口 - 【联赛列表】API调用示例代码
  10. 自己做量化交易软件(10)通通量化AI框架的数据获取与格式