首先,到官网下载相关的压缩包

https://www.sqlite.org/download.html

但是要自己再重新编译一个, 博主自己收集了一下,密码:hixo

https://pan.baidu.com/s/1Zdp0UMl2Mr4J2JUe28G7JQ

将该压缩包放在你想要放置的文件夹里,情况是这样的

然后在该路径下运行cmd,可以直接在地址栏中输入cmd并回车

然后输入 命令

  1. sqlite3 databaseName.db

如果databaseName 名字的数据库在该路径下存在,则进入该数据库,如果不存在,则创建该数据库

然后就可以正常使用了, 如使用 .table 可以查看所有表, .exit可以退出(似乎这种数据库命令,不是sql语句的sqlite都是前面加 .)

该数据库允许navicat连接, (点连接,选择数据库位置即可)

接下去用 c++ 连接

当前示例数据库结构

  1. table|user|user|2|CREATE TABLE "user" (
  2. "id" INTEGER NOT NULL,
  3. "account" TEXT(100),
  4. "userName" TEXT(100),
  5. "password" TEXT(100),
  6. "address" TEXT(100),
  7. "IDNumber" TEXT(100),
  8. "openDate_year" INTEGER,
  9. "openDate_month" INTEGER,
  10. "openDate_day" INTEGER,
  11. "isLost" INTEGER,
  12. "lostDate_year" INTEGER,
  13. "lostDate_month" INTEGER,
  14. "lostDate_day" INTEGER,
  15. "salt" TEXT,
  16. PRIMARY KEY ("id" ASC)
  17. )

基本读取

  1. bool read() {
        sqlite3_stmt* stmt;        //编译的sql语句和操作的存储类
        sqlite3 * conn;            //用于保存与sqlite3的连接
        if (sqlite3_open("D:\\c++ study\\nicobank\\NicoNicoBank\\NicoNicoBank\\database\\bank.db", &conn) != SQLITE_OK) {
            return false;
        } //打开连接, 参数为数据库和sqlite3类
        
        sqlite3_prepare_v2(conn, "select * from user where account = \"test\";", -1, &stmt, 0);
        //预编译sql语句, 参数为,sqlite3类的连接(已打开),sql语句,可能是数据长度,填-1就会自己计算, sqlite3_stmt类, 最后一个我也不知道啥
        int result = sqlite3_step(stmt);
        while (sqlite3_step(stmt) == SQLITE_ROW) { //进行相关的执行步骤, 每次调用可以获取一行的值,因此可以多次调用
            int id = sqlite3_column_int(stmt, 0);
            cout << id << endl;    //获取当行指定列的值
        }
    }

基本写入

  1. bool write() {
  2. sqlite3 * conn;
  3. if (sqlite3_open("d:\\c++ study\\nicobank\\niconicobank\\niconicobank\\database\\bank.db", &conn) != SQLITE_OK) {
  4. return false;
  5. }
  6. sqlite3_stmt * stmt = NULL;
  7. string sql = "insert into user (account, userName, password, address, IDNumber, openDate_year,openDate_month, openDate_day, isLost, lostDate_year, lostDate_month, lostDate_day) values (?,?,?,?,?,?,?,?,?,?,?,?);";
  8. //(id, account, username, password, address, idnumber, opendate_year,opendate_month, opendate_day, islost, lostdate_year, lostdate_month, lostdate_day)
  9. sqlite3_prepare_v2(conn, sql.c_str(), -1, &stmt, 0);
  10. //上述内容解释同read()
  11. //需要注意的是?为占位符,可以通过sqlite3_bind_类型 这一组函数去绑定相关值,而问号位置是由1开始计算的
  12. string a = "test";
  13. string tempStr[5];
  14. for (int i = 0; i < 5; i++) tempStr[i] = "str";
  15. int tempInt[7];
  16. for (int i = 0; i < 7; i++) tempInt[i] = 1;
  17. //简单初始化一些数值用于传值
  18.  
  19. for (int i = 1; i <= 5; i++) {
  20. sqlite3_bind_text(stmt, i, tempStr[i-1].c_str(), -1, NULL);
  21. //绑定第1到第5个问号
  22. //参数分别为stmt类, 问号位置,传入的值,字符串长度,-1则函数自行计算,我也不知道是啥但是可以填NULL的地方
  23. }
  24. for (int i = 6; i <= 12; i++) {
  25. sqlite3_bind_int(stmt, i, tempInt[i-6]);
  26. //绑定整数,stmt类,问号位置,传入值
  27. }
  28. int result = sqlite3_step(stmt); //执行命令
  29. sqlite3_finalize(stmt); //关闭连接,避免
  30. return false;
  31. }

使用c++控制sqlite3的更多相关文章

  1. SQLite源程序分析之sqlite3.c

    /****************************************************************************** ** This file is an a ...

  2. sqlite3 shell的使用

    sqlite的安装 1. 首先是下载sqlite,可以该页面下载:http://www.sqlite.org/download.html 当前的最新版本为:sqlite-shell-win32-x86 ...

  3. SQLite3 学习笔记

    1.数据存储方式 Plist(NSArray\NSDictionary) Preference(偏好设置\NSUserDefaults) NSCoding(NSKeyedArchiver\NSkeye ...

  4. SQLITE3 使用总结

    转自: http://blog.chinaunix.net/uid-8447633-id-3321394.html 前序: Sqlite3 的确很好用.小巧.速度快.但是因为非微软的产品,帮助文档总觉 ...

  5. sqlite3常用命令&语法

    sqlite数据库只用一个文件就ok,小巧方便,所以是一个非常不错的嵌入式数据库,SQLite大量的被用于手机,PDA,MP3播放器以及机顶盒设备.    Mozilla Firefox使用SQLit ...

  6. sqlite3编程使用简介

    sqlite3使用范围 SQLite不同于其他大部分的SQL数据库引擎,因为它的首要设计目标就是简单化: 1.易于管理 2.易于使用 3.易于嵌入其他大型程序 4.易于维护和配置  许多人喜欢SQLi ...

  7. IOS异步和多线程操作&&在sqlite3中的应用

    1,数据库I/O操作(异步) 数据库本身是存储在磁盘上.访问和修改数据库,即对磁盘进行读写,即I/O操作. 磁盘属于计算机硬件,具有DMA能力,不需要CPU干预,可以实现异步操作. I/O操作一般是消 ...

  8. Ubuntu下sqlite3的安装及使用

    Sqlite是一款轻型的数据库,实现了多数SQL-92标准,包括事务(原子性,一致性,隔离性和持久性 ACID),触发器与多数复杂查询.对于一个移动手持设备的应用开发者,Sqlite是居家旅行必备数据 ...

  9. iOS sqlite3数据库解析

    看来从版本3.3.1基本上已经支持线程句柄的传递功能.具体限制我标记了一下.(6) Is SQLite threadsafe?SQLite is threadsafe. We make this co ...

随机推荐

  1. php验证码处理

    //基本步骤 1,先创建一张指定宽度和高度的一张验证码图片 imagecreatetruecolor() 2,给验证码图片添加背景颜色 和文字颜色 imagecolorallocate() 3, 在指 ...

  2. Video 视频播放防作弊和禁止下载

    1.实现效果 - 查看源码 实现视频可播放不能下载,禁止右键下载.F12源码打开链接下载 实现只在当前窗口播放,切换窗口.窗口最小化.窗口被遮挡停止播放,恢复后继续播放 在线demo:缓存完再播放 . ...

  3. WCF、WebAPI、WCFREST、WebService 、RPC、HTTP 概念解释

    在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下,你有很多的选择来构建一个HTTP Services.我分享一下我对 ...

  4. Devexpress Xtrareport 打印报表

    需要引用 Using Devexpress.Xtrareport.UI: Using Devexpress.XtraPrinting.Localiztion 实例化报表,xtrareport my=n ...

  5. JavaScript判断变量类型

    使用JavaScript变量时是无法判断出一个变量是0 还是“”的 这时可用typeof()来判断变量是string 还是number来区分0和“”, typeof(undefined) == 'un ...

  6. 方法引用(Method reference)和构造器引用(construct reference)

    Java 8 允许你使用 :: 关键字来传递方法或者构造函数引用 方法引用语法格式有以下三种: objectName::instanceMethod ClassName::staticMethod C ...

  7. 阿里云短信验证~JAVA后台

    maven :中的 pom.xml添加 <dependency> <groupId>com.aliyun</groupId> <artifactId>a ...

  8. Dubbo分布式日志追踪

    使用dubbo分布式框架进行微服务的开发,一个大系统往往会被拆分成很多不同的子系统,并且子系统还会部署多台机器,当其中一个系统出问题了,查看日志十分麻烦. 所以需要一个固定的流程ID和机器ip地址等来 ...

  9. JSP中的<%%>,<%! %>,<%= %>,<%-- --%>

    <%  %>             添加java代码 <%!   %>   添加java方法 <%= %>    将变量或表达式输出到页面 <%--   - ...

  10. 从零开始的全栈工程师——JS面向对象(初篇)

    面向对象编程 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式.它使用先前建立的范例,包括模块化,多态和封装几种技术.今天,许多流行的编程语言(如Java,JavaScript,C#,C+ ...