db数据库[sqlite3]操作插件封装类库使用方法

更新时间:2021-04-18 20:18
实列模块名 : db
db 模块封装了手机常用数据库 sqlite 的增删改查语句,可实现数据的本地存储,极大的简化了数据持久化问题
下载地址
只有本站注册会员才能查阅!
当前模块插件ver:1.0.0.0版本
当前插件只封装了以下方法,后续更新新增更多方法!


基础参数配置

    var dbConfig = {
        database:"test", // 数据库文件名称,【必须输入】
        path:"", // 数据库所在路径,不传时使用默认创建的路径。支持 fs://、widget://等协议(如fs://user.db)自动创建的路径【可空】
        table:"user_info", // 表昵称,可通过name、table方法动态切换。【可空】
        prefix:'ipw_', // 数据库表前缀 name 方法不带前缀,table方法会带前缀【可空】
        debug:true, // 是否输出报错信息,执行、查询报错信息,可通过try{}catch(error){} // 拦截错误输出【可空,默认:false】
        print:true, // 打印SQL语句,如果为true每次执行、查询SQL都会console.log(SQL语句)【可空,默认:false】
    };

初始化对象

    var db = new Db(dbConfig);
    var db = new Db({database:"test"});

动态更改配置

    db.setConfig(dbConfig); // 动态更改配置,支持上面的所有配置
    db.setConfig( {print:true} ); // 动态更改配置,支持上面的所有配置


连接表

    var dbobj = db.name("user_info"); // 无前缀方法,连接表 表名显示:user_info
    var dbobj = db.table("user_info"); // 带前缀方法,连接表,表名显示:ipw_user_info

判断当前表是否存在

    dbobj.hasTable(); //判断当前连接表是否存在,无参数

创建数据库

    dbobj.create({}); // 根据当前连接表名称创建表,创建不一定先判断表存在,插件内自动判断,支持:json / string 参数

创建其他表

    dbobj.create({},'test_table'); // 创建其他表
    
    json参数格式:{键名:数据},例如:{id:"INTEGER PRIMARY KEY autoincrement"}

    String参数格式: " id INTEGER PRIMARY KEY autoincrement,name TEXT NOT NULL"


JSON创建实列:

    var res = dbobj.create({
        "id":"INTEGER PRIMARY KEY autoincrement",
        "name":"TEXT NOT NULL",
        "password":"CHAR(50)",
        "money":"int"
    });
    if(res) alert("创建成功"); else alert("创建失败");

文本类型参数创建

    var res = dbobj.create("id INTEGER PRIMARY KEY autoincrement,name TEXT NOT NULL,password CHAR(50),money int");
    if(res) alert("创建成功"); else alert("创建失败");

查询数据:

    dbobj.where({ id:1 }).select(); // 返回数组形式[]
    dbobj.where( "id",1 ).select(); // 返回数组形式[]
    dbobj.select(); // 返回数组形式[]
    支持多级连贯操作
    dbobj.where( "id",1 ).order("id desc").limit(1,100).select();

查询单个数据

    dbobj.where( "id",1 ).find(); // 返回JSON

查询指定字段数据

    dbobj.where( "id",1 ).value("name");

更新数据

    dbobj.where( "id",1 ).update({
        name:"6666"
    });

    dbobj.where( "id",1 ).setInc("price"); // 字段减1
    dbobj.where( "id",1 ).setInc("price",100); // 字段减100

    dbobj.where( "id",1 ).setDec("price"); // 字段加1
    dbobj.where( "id",1 ).setDec("price",100); // 字段加100

删除数据

    dbobj.where( "id",1 ).delete(); // 根据当前条件删除
    dbobj.delete(); // 删除当前表全部数据

插入数据

    dbobj.insert({
        name:"www.ipwas.cn",
        password:"123456"
    });
    dbobj.getInsertId(); // 获取插入数据的自增ID

查询排序:

    dbobj.where( "id>0" ).order("id desc").select();

限制查询条数

    dbobj.where( "id>0" ).limit(0,10).select(); // 查询前面10条

自定义SQL语句操作

    db.query(); // 查询自定义SQL语句,必须输入一个完整的语句
    db.exec(); // 执行自定义SQL语句,必须输入一个完整的语句

错误拦截

当配置参数【debug = true】时查询、执行中产生的错误我们可以可通过try{}catch(error){}拦截错误输出

例如:


try{

    var db = new Db({database:"test"});

    var result = db.name("user").where("test").select();

    console.log( "查询数据返回:"+ JSON.stringify( result ) );



}catch(e){
    console.log( "错误信息:"+e );

    像上面产生的错误就会在这里执行,上面为什么会报错?因为where 条件里只有名称没有值

}