SQLite使用JSON扩展

    xiaoxiao2021-03-25  134

    一、介绍

        SQLite3.9.0之后的版本,添加了JSON扩展。在表中可以保存JSON类型。实际上SQLiteJSON类型的字段作为文本字段对待。但可对定义为JSON的字段,调用特点的函数,来实现JSON内容的增删改查。不用再自己用程序实现相似的增删改查操作。

        SQLiteJSON扩展,定义在json1.c中。此文件位于源码路径下的ext/misc中。

        SQLiteJSON参考了MySQL7.0中的JSON接口。可参数此文章学习使用SQLiteJSON使用方法。

    二、编译及加载JSON插件方法

    1、先编译sqlite3.dll。加入参数SQLITE_ENABLE_JSON1=1。开启JSON扩展。

    nmake /f Makefile.msc sqlite3.dll TOP=..\sqlite-src-3.14.1 DEBUG=1 SQLITE_ENABLE_JSON1=1

     

    2、编译json扩展

    编译json1.c文件。注意编译时加入SQLITE_ENABLE_JSON1预编译定义。假设编出的dll名为json_ext.dll

     

    3、加载json插件

    从命令行运行Sqlite3.exe命令行交互工具。执行以下命令加载插件:

    .load ./json_ext.dll sqlite3_json_init

     

    4、测试JSON插件加载是否成功

    执行SQLselect json_type('["a", "b", 1]');

    输出结果若为array,则加载JSON插件成功。

     

    三、实例

    实例1

    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

    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

    转载请注明原文地址: https://ju.6miu.com/read-2519.html

    最新回复(0)