一、Sqlite简介

     SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。

 SQLite是一款轻量级的、基于文件的嵌入式数据库,实现自包容、零配置、支持事务的SQL数据库引擎。与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。第一个Alpha版本诞生于2000年5月,直到今天已经成为最流行的嵌入式数据库,包括Google在内的许多公司在其桌面软件中亦使用SQLite存储用户数据,由此看来,其稳定性毋庸置疑。

       实际应用中,SQLite作为目前最为流行的开源嵌入式关系型数据库,在系统的架构设计中正扮演着越来越重要的角色。和很多其它嵌入式NoSQL数据库(如BerkeleyDB、MemBASE等)不同的是,SQLite支持很多关系型数据库的基本特征,如标准SQL语法、事务、数据表和索引等,这在数据移植、程序演示等应用中有着不可替代的优势。从官方文档中我们可以获悉到,SQLite支持的数据量和运行效率都是非常骄人的,因此在海量数据的解决方案中,SQLite可以作为数据预计算的桥头堡,从而显著减少存储在关系型数据库服务器中的数据数量,最终提高系统的查询效率和运行期效率,同时也可以显著的降低数据备份的磁盘开销。
 

二、下载

   1、在github上下载Sqlite的3.38.0的版本

https://github.com/sqlite/sqlite

编译sqlite 静态库 sql编译软件_sql

https://github.com/sqlite/sqlite


三、tcl安装及配置

1、tcl简介

      TCL是一种很通用的脚本语言,功能强大。最早称为“工具命令语言”"Tool Command Language",但是目前已经不是这个含义,不过我们仍然称呼它TCL,发音为"tickle”。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。

        实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。它有一个简单的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。

        Tcl数据类型简单。对Tcl来说,它要处理的数据只有一种——字符串。Tcl将变量值以字符串的形式进行存储,不关心它的实际使用类型。内嵌的Tk(toolkit)图形工具可以提供简单而又丰富的图形功能,让用户可以轻松的创建简单的图形界面。

        Tcl的执行是交互式的,Tcl提供了交互式命令界面,界面有两种:tclsh和wish。tclsh只支持Tcl命令,wish支持Tcl和Tk命令。通过交互界面,我们就可以象执行UNIX shell命令一样,逐条命令执行,并即时得到执行结果。

        Tcl/Tk可以提供跨平台的支持。Tcl语言可以运行于绝大多数当今流行的UNIX、WINDOWS和Macintosh等系统上,而且命令通用,只是启动的细节有些不同。
 

2、tcl下载

    (1)、 ActiveTcl8.6.0.0b7.295590-win32-x86_64-threaded.exe

  ActiveTcl-8.6.11.1.0000-MSWin32-x64-636b0c37.exehttps://camel-builds.s3.amazonaws.com/ActiveTcl/MSWin32-x64/20210816T194909Z/ActiveTcl-8.6.11.1.0000-MSWin32-x64-636b0c37.exe?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQ5FYQM547I2EFPRW%2F20220312%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220312T125105Z&X-Amz-Expires=21600&X-Amz-SignedHeaders=host&X-Amz-Signature=7797397c34237ae82295879368394b6acdf9365a82512c8efa2c9ab3d03161ff

编译sqlite 静态库 sql编译软件_sqlite_02

https://camel-builds.s3.amazonaws.com/ActiveTcl/MSWin32-x64/20210816T194909Z/ActiveTcl-8.6.11.1.0000-MSWin32-x64-636b0c37.exe?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQ5FYQM547I2EFPRW%2F20220312%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220312T125105Z&X-Amz-Expires=21600&X-Amz-SignedHeaders=host&X-Amz-Signature=7797397c34237ae82295879368394b6acdf9365a82512c8efa2c9ab3d03161ffActiveStatehttps://platform.activestate.com/

3、tcl安装

     双击下一步即可

4、tcl配置

1、ActiveTcl8.6.0.0b7.295590的配置

(1)、设置path

      添加C:\Tcl\bin

编译sqlite 静态库 sql编译软件_编译sqlite 静态库_03

 

 (2)设置TCLDIR

     设置TCLDIR为C:\Tcl

2、 ActiveTcl-8.6.11.1.0000的配置

编译sqlite 静态库 sql编译软件_SQL_04

四、编译

1、32位编译

mkdir bld
    cd bld
    nmake /f ..\sqlite\Makefile.msc TOP=..\sqlite
    nmake /f ..\sqlite\Makefile.msc sqlite3.c TOP=..\sqlite
    nmake /f ..\sqlite\Makefile.msc sqlite3.dll TOP=..\sqlite
    nmake /f ..\sqlite\Makefile.msc sqlite3.exe TOP=..\sqlite
    nmake /f ..\sqlite\Makefile.msc test TOP=..\sqlite

编译sqlite 静态库 sql编译软件_SQL_05

2、64位编译

mkdir bld
    cd bld
    nmake /f ..\sqlite\Makefile.msc TOP=..\sqlite
    nmake /f ..\sqlite\Makefile.msc sqlite3.c TOP=..\sqlite
    nmake /f ..\sqlite\Makefile.msc sqlite3.dll TOP=..\sqlite
    nmake /f ..\sqlite\Makefile.msc sqlite3.exe TOP=..\sqlite
    nmake /f ..\sqlite\Makefile.msc test TOP=..\sqlite

编译sqlite 静态库 sql编译软件_数据库_06

 五、json的存储

1、实例1

sqlite> sqlite3.exe testdb1;
 sqlite> create table facts(sentenc JSON);sqlite> insert into facts values(json_object("mascot", "Our mascot is a dolphin name sakila"));
sqlite> SELECT sentenc"$.mascot" FROM facts;

查询结果:

{"mascot":"Our mascot is a dolphin name sakila"}

2、实例2

sqlite> sqlite3.exe testdb2;
 sqlite> create table userj(userInfo JSON);sqlite> insert into userj values('{"id":"19", "name":"Lida"}');
sqlite> insert into userj values('{"id":"20", "name":"james"}');
sqlite> select * from userj;
查询结果:
{"id":"19", "name":"Lida"}
{"id":"20", "name":"james"}
sqlite> SELECT json_extract(userInfo,"$.name") FROM userj;
查询结果:
Lida
james