UNPKG

yoyosqlite

Version:

一个链式连接sqlite数据库的扩展包

159 lines (123 loc) 4.55 kB
# YoyoSqlite 链式操作库 (采用Sqlite3) ## 前言 对于sql不熟悉的人不是很友好,而且复用并不是很方便,所以封装了这个链式方法库(可能有些地方写得不是很好)!但是我会尽力去完善它! 我是Yoyo感谢您的浏览!!!! ## 引入 ```javascript import YoyoSqlite from 'yoyosqlite'; ``` ## 连接sqlite数据库 ```javascript YoyoSqlite.createDatabase('./test.db'); ``` ## 添加数据 ```javascript const result =await YoyoSqlite.table('user')//需要操作的完整表名 .field(['name','account','describe'])//设置字段 .insert(['我是名称',123456,'我是描述']);//添加一条数据 //你也可以添加多条(比如这样) .insert([ ['我是名称1',123456,'我是描述1'], ['我是名称2',123456,'我是描述2'], ]); //或许你想这样做(这样直接指定字段) const result =await YoyoSqlite.table('user')//需要操作的完整表名 .insert({name:'我是名称呀',account:9877,describe:'说得是这样?'});//添加一条数据 //任然,你也可以添加多条(比如这样) .insert([ {name:'我是名称呀',account:9877,describe:'说得是这样?'}, {name:'我是名称呀',account:9877,describe:'说得是这样?'} ]); ``` ## 删除数据 ```javascript const result =await YoyoSqlite.table('user')//需要操作的完整表名 .where('id',1)//获取你可以添加一些条件 (id = 1) .where('name','<>','yoyo')//获取你可以添加一些条件 (name <> 'yoyo') .where([ ['name','like','%yoyo%'], ['ps','in',[1,2,3,4]], ])//获取你可以添加一些条件 (name like %yoyo% AND ps in (1,2,3,4)) .limit(5)//获取还可以限制删除的条数 .delete(); ``` ## 更新数据(修改) ```javascript const result =await YoyoSqlite.table('user')//需要操作的完整表名 .where('id',1)//获取你可以添加一些条件 (id = 1) .update({ rmb:99999, name:'我被修改了' }) .update(['name',`'被修改了'`]); // 注意这个是原始数据 字符串需要自行增加 单引号 .update([ ['name', "'被修改了'"], ['rmb', 'rmb+1'] ]); ``` ## 查询数据 ```javascript !!!!!!!!!!!!!查询返回值有修改哦!!!!!看我 result.data;//查询到的数据 result.field;//字段 result.count;//查询到的数据总数量 const result =await YoyoSqlite.table('user')//需要操作的完整表名 .where('id',1)//获取你可以添加一些条件 (id = 1) .find();//查询一条数据 whereOr() //或者 // 子查询 where('id',()=>{ return YoyoSqlite.table('qd').whereOr('a2', '=', 222); }); //或者 (子查询 IN) .whereIn('id',()=>{ return YoyoSqlite.table('qd').whereOr('a2', '=', 222).whereOr('a2', '=', 222); }); //或者 .select();//查询多条 //你任然可以用 .limit(5) //or .limit(0,18) //去限制它 //我们看看排序 .order('id','DESC')//设置降序 .order({ id:'ASC', rmb:'DESC' }) //你也可以单独设置字段显示默认是 * .field(['id','name'])//只要两个字段 .field('name AS 名称')//或者用来取名也可以 .group('id')//分组查询 .group(['id','name'])//分组查询 .having('count(*) > 1')//分组条件(原始拼接) //多表联查也是支持的 const result = await YoyoSqlite.table('user')//需要操作的完整表名 .join('user2 u2','user.id = u2.id')//你可以这样的当然它还有(leftJoin,rightJoin,fullJoin)他们分别代表(INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL JOIN) ``` ## 分页查询 ```javascript const result = await YoyoSqlite.table('user').where('id', '>', 1).order('id','DESC').pages(1,2); console.log(result); ``` ## 事务操作 ```javascript async function test() { const result = await YoyoSqlite.beginTransaction(async (conn) => { await conn.table('user').where('id', '=', 1).delete(); await conn.table('user').where('id', '=', 1).update({ name: '张三' }); }); // result 是true就是成功提交了 是false就是回滚了 } // 启动事务(都是异步的你可以用 await 等待它或者 在 then 回调里面执行) ``` ## 原始的查询和执行 ```javascript //如果还是没有您需要的你可以自己编写sql使用以下的方法执行 await YoyoSqlite.query(sql);//执行并返回 await YoyoSqlite.query(sql,bind);//执行并返回 (它有一个可选参数绑定就是预处理方式) await YoyoSqlite.execute(sql); await YoyoSqlite.execute(sql,bind);//使用方式和上面雷同 ```