文章目录:

                 

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 之基础篇的更多相关文章

  1. 十一、Abp vNext 基础篇丨测试

    前言 祝大家国庆快乐,本来想国庆之前更新完的,结果没写完,今天把剩下的代码补了一下总算ok了. 本章节也是我们后端日常开发中最重要的一步就是测试,我们经常听到的单元测试.集成测试.UI测试.系统测试, ...

  2. C#多线程之基础篇3

    在上一篇C#多线程之基础篇2中,我们主要讲述了确定线程的状态.线程优先级.前台线程和后台线程以及向线程传递参数的知识,在这一篇中我们将讲述如何使用C#的lock关键字锁定线程.使用Monitor锁定线 ...

  3. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  4. 2000条你应知的WPF小姿势 基础篇<15-21>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...

  5. ABP框架实践基础篇之开发UI层

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看AB ...

  6. C#多线程之基础篇2

    在上一篇C#多线程之基础篇1中,我们主要讲述了如何创建线程.中止线程.线程等待以及终止线程的相关知识,在本篇中我们继续讲述有关线程的一些知识. 五.确定线程的状态 在这一节中,我们将讲述如何查看一个线 ...

  7. C#多线程之基础篇1

    在多线程这一系列文章中,我们将讲述C#语言中多线程的相关知识,在多线程(基础篇)中我们将学习以下知识点: 创建线程 中止线程 线程等待 终止线程 确定线程的状态 线程优先级 前台线程和后台线程 向线程 ...

  8. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

  9. iOS系列 基础篇 04 探究视图生命周期

    iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...

随机推荐

  1. 最简单的mybatis增删改查样例

    最简单的mybatis增删改查样例 Book.java package com.bookstore.app; import java.io.Serializable; public class Boo ...

  2. Html5 -- 语义标签兼容性处理

    方法一:通过js处理 方法二:完美的处理方式 no.1 !--[if lte IE 8]> <script type="text/javascript" src=&qu ...

  3. SciPy 教程

    章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...

  4. poj 3617 Best Cow Line 贪心模拟

    Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 42701   Accepted: 10911 D ...

  5. PWM与时间片思想

    改编自:http://www.moz8.com/thread-79049-1-1.html 什么是PWM? PWM:脉冲宽度调制,由于在数字电路(或者单片机)输出模拟信号的成本高昂,换句话说,受制于只 ...

  6. 扩展的Sobel 算子

    Custom Extended Sobel Filters  https://arxiv.org/pdf/1910.00138.pdf sobel算子是进行边缘检测的一个重要算子.它通常是一个3x3的 ...

  7. python 数据处理 对txt文件进行数据处理

    数据: 对txt文件进行数据处理: txt_file_path = "basic_info.txt" write_txt_file_path = "basic_info1 ...

  8. 二叉树 - DFS与BFS

    二叉树 - DFS与BFS ​ 深度优先遍历 (DFS Depth First Search) 就是一个节点不到头(叶子节点为空) 不回头 ​ 广度有点遍历(BFS Breadth First Sea ...

  9. java核心-多线程(8)- 并发原子类

        使用锁能解决并发时线程安全性,但锁的代价比较大,而且降低性能.有些时候可以使用原子类(juc-atomic包中的原子类).还有一些其他的非加锁式并发处理方式,我写这篇文章来源于Java中有哪些 ...

  10. System.Reflection.ReflectionTypeLoadException

    引用了一个第三方dll, 此dll经过混淆,但是未签名. 然后,主程序无法反射了, 取消主程序的签名后正常反射.