C/C++ SQLite 之基础篇
文章目录:
1. 下载 SQLite3 源码:
2. 下载 SQLite3.dll 文件:
3. 生成 SQLite3.lib 文件 :
4. 生成或者下载 SQLite3 Shell 文件 :
5. 创建数据库以及数据表:
6. 总结:
1. 下载 SQLite3 源码:
虽然说摆弄 c/c++ 有很长时间了,但是说到用 c/c++ 来摆弄数据库倒还真是没有弄过,
一直有关数据库的项目似乎都用 .Net 给去 OK 了,就好比 SQLite,
现在的项目就是用的 SQLite.Net,有什么东西都是用 c# 直接操作 SQLite.Net 了,
而相对底层的东西则使用 c/c++ 完成且封装成 DLL 供 c# 调用就 OK 了。
不过有的时候自己在写一些小东西的时候,可能也会有些数据需要本地存储的,
以前为了图个简单,就直接存文件咯,不过要是相对隐私点的东西的话,
我想还是有个数据库比较好,这不是就有 SQLite3 了嘛,注意一下哈,
SQLite3 是供 c/c++ 代码来使用的,如果是 .Net 的话那就得用 SQLite.Net 了,
废话少说,进入正题了,首先我们需要下载好 SQLite3 的相关文件,
官网地址:http://www.sqlite.org/download.html
我们先下载的是 SQLite3 的源码,下载好后,你可以解压缩出来,然后你就会看到 4 个 C/C++ 文件了。
而我们每次在 C/C++ 中使用 SQLite3 时总是需要其中的头文件 sqlite3.h
2. 下载 SQLite3.dll:
然后需要下载的是 SQLite3 的 DLL 文件以及导出库,
下载完后你可以解压出来,你会发现只有 SQLite3.dll 和 SQLite3.def 两个文件,
3. 生成 SQLite3.lib 文件:
做过 c/c++ DLL 的都知道,.def 文件可以用来定义一个 DLL 中 API 的导出,
所以我们可以打开 SQLite3.def 看看,里面定义的 API 名称就是 SQLite3.dll 所导出的 API,
而在 C/C++ 中如果你要链接到其他的 DLL 上,你必须要有那个 DLL 的导出库,也就是 .lib 文件,
而我们这里没有导出文件(Lib)怎么办呢?没有那就根据 DLL 和.def 文件来生成一个 .lib 文件不就 OK 了 ~
首先将 SQLite3.dll 和 SQLite3.def 文件拷贝到 VS 安装目录下的 Bin 文件夹,
比如我安装的是 VS2010,且默认安装在 C:\Program Files\ 目录下面,
那么你就需要将上面的两个文件拷贝到以下目录:
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin
然后打开 Visual Studio 命令提示符,且定位到上面的这个目录,
然后输入命令:lib /def:sqlite3.def /machine:ix86,
然后你就会在 Bin 目录下发现已经生成了 SQLite3.lib 文件。
4. 生成或下载 SQLite3 Shell 文件:
关于这 SQLite3 的 Shell 文件呢,就是用来创建 SQLite3 数据库啊,创建表啊之类的东西,
说白了就是个 SQLite Admin 的控制台界面,当然咯,控制台这个东西并不怎么好用,
所以你可以考虑换个其他的带 GUI 的工具来管理你的 SQLite3 数据库。
有个工具不错,叫 DataBase.Net,什么乱七八糟的数据库它都可以连接上去,不过要 .Net Framework 的支持。
对于这个 SQLite3 的 Shell 文件你可以直接在 SQLite 的官方网站上下载到,
而后,除了下载 SQLite3 的 Shell 工具外,我们还可以自己编译 SQLite 源代码来生成这个工具,
前面我们已经下载好了 SQLite3 的源代码,并且源代码里面还有一个叫做 shell.c 的文件,
其实这个文件就可以用来处理 SQLite3 Shell 命令的,
所以我们可以直接在 VS2010 下新建一个 Console 项目,
然后将源代码里面的 4 个 C\C++ 文件拷贝到项目中,然后直接编译,
你也可以得到 SQLite3 的 Shell 工具 SQLite3.exe。
5. 创建数据库以及数据表:
这里使用麻烦点的方式,即使用 SQLite3 的 Shell 工具,
下面的例子呢就是很简单的方式,即使用 SQLite3 的 Shell 工具来创建个 DataBase,
然后再创建个 Table,再插入几条记录,查询一下就 OK 了。
具体命令就看下面的截图就好了:
首先在命令行下定位到你的 SQLite3.exe 也就是 Shell 程序所在的目录:
比如我的 SQLite3.exe 所在目录为:
E:\Code\SQLite\sqlite-shell-win32-x86-3071000
然后输入命令 sqlite3 testDB.db 从而创建 SQLite 数据库,
然后输入命令 create table testDB_ID(ID int, Number int) 来创建数据表 testDB_ID
然后输入命令 ; 从而执行上面的创建表的命令。
执行完这些命令后,在你的 Shell 程序也就是 SQLite3.exe 所在的位置中发现你创建的 testDB.db 数据库了。
其实上面的这种创建数据库的方式太麻烦了,还不如直接用 Database.Net 来做,方便很多,
比如我用 DataBase.Net 打开我们上面创建的这个 testDB.db 数据库,用这个工具来管理数据库很方便。
6. 小结:
好,这篇博文到这里就完了,话说回来上面的文章还真没有讲到什么有用的东西,
仅仅是一些关于 SQLite 的环境啊之类的流水账记录。
仅仅是对于那些没有操作过 SQLite3 的小白可能还有点作用,
当然咯,我也还是个小白,所以才做这个文章做个记录。
下面的篇章就要来写写在 C\C++ 下面对 SQLite 的一些具体的操作了。
C/C++ SQLite 之基础篇的更多相关文章
- 十一、Abp vNext 基础篇丨测试
前言 祝大家国庆快乐,本来想国庆之前更新完的,结果没写完,今天把剩下的代码补了一下总算ok了. 本章节也是我们后端日常开发中最重要的一步就是测试,我们经常听到的单元测试.集成测试.UI测试.系统测试, ...
- C#多线程之基础篇3
在上一篇C#多线程之基础篇2中,我们主要讲述了确定线程的状态.线程优先级.前台线程和后台线程以及向线程传递参数的知识,在这一篇中我们将讲述如何使用C#的lock关键字锁定线程.使用Monitor锁定线 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- 2000条你应知的WPF小姿势 基础篇<15-21>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...
- ABP框架实践基础篇之开发UI层
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看AB ...
- C#多线程之基础篇2
在上一篇C#多线程之基础篇1中,我们主要讲述了如何创建线程.中止线程.线程等待以及终止线程的相关知识,在本篇中我们继续讲述有关线程的一些知识. 五.确定线程的状态 在这一节中,我们将讲述如何查看一个线 ...
- C#多线程之基础篇1
在多线程这一系列文章中,我们将讲述C#语言中多线程的相关知识,在多线程(基础篇)中我们将学习以下知识点: 创建线程 中止线程 线程等待 终止线程 确定线程的状态 线程优先级 前台线程和后台线程 向线程 ...
- iOS系列 基础篇 03 探究应用生命周期
iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...
- iOS系列 基础篇 04 探究视图生命周期
iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...
随机推荐
- CSP-S2019 爆炸记
DAY -1 停课的第五天.早上来机房教练居然不在,先看了一道憨题,发现ST表+二分查找nlogn水过,然后发现单调栈可以O(n),肥肠开心 打了走人. 然后就开始颓了(逃 颓了一会之后看愤怒的小鸟这 ...
- 「NOI2015」荷马史诗
传送门 Luogu 解题思路 \(k\) 叉 \(\text{Huffman}\) 树板子题,至于最长串最短,只要同样权值的优先考虑深度小的就好了. 细节注意事项 咕咕咕 参考代码 #include ...
- leetcode445 Add Two Numbers II
""" You are given two non-empty linked lists representing two non-negative integers. ...
- 记一次菜鸡的低级折腾--WordPress get Webshell(后台文件编辑插马)
挺简单的一个测试站,开始思路错了,一直去网上找WordPress的漏洞,看有没有什么能利用的,未果,因为这个测试站有些地方并不完善,有的漏洞利用不了,菜鸡的我连弱口令都没猜对,没知识就是这么悲哀. 下 ...
- CRM:异步加载下拉列表,三个列表出现同样的下拉框
异步加载下拉列表,三个列表出现同样的下拉框,原因如下: Spring默认单例,如果Action是单例,那么上一次查询的结果就可能被下一次的查询所调用.所以必须配置action为多例, 如果采用单例模式 ...
- C语言三种整数类型
1,int 是 C 语言的基本整数类型,可以满足我们处理一般数据的需求. C 语言还提供了四个可以修饰 int 的关键字:short.long.signed,以及 unsigned. 利用这四个关键字 ...
- 你必须知道的.Net 8.4.4 位枚举
位标记集合是一种由组合出现的元素形成的列表,通常设计为以“位或”运算组合新值:枚举 类型则通常表达一种语义相对独立的数值集合.而以枚举类型来实现位标记集合是最为完美的组 合,简称为位枚举.在.NET ...
- AndroidStudio3.0打开Android Device Monitor
相信很多更新了AndroidStudio3.0的小伙伴会发现无法在工具栏的的Tools->Android->device monitor,打开DeviceMonitor. 今天偶然看到 G ...
- Java线程池 ThreadPoolExecutor类
什么是线程池? java线程池是将大量的线程集中管理的类, 包括对线程的创建, 资源的管理, 线程生命周期的管理. 当系统中存在大量的异步任务的时候就考虑使用java线程池管理所有的线程, 从而减少系 ...
- 吴裕雄--天生自然java开发常用类库学习笔记:属性类Properties
import java.util.Properties; public class PropertiesDemo01{ public static void main(String args[]){ ...