# uniapp-sqliteplus **Repository Path**: xueyanjun/uniapp-sqliteplus ## Basic Information - **Project Name**: uniapp-sqliteplus - **Description**: 一个用于UniApp的SQLite数据库操作工具库,提供了简洁的API来操作SQLite数据库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-07 - **Last Updated**: 2025-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # uniapp-sqliteplus 一个用于UniApp的SQLite数据库操作工具库,提供了简洁的API来操作SQLite数据库。 ## 特性 - 简单易用的API设计 - 支持表的创建、删除、查询、插入、更新和删除操作 - 支持事务处理 - 支持索引创建和删除 - Promise风格的异步操作 ## 安装 ```bash npm install uniapp-sqliteplus ``` ## 使用方法 ### 引入模块 ```javascript import DataBase from 'uniapp-sqliteplus/xsqlite/DataBase'; // 或者 import xsqlite from 'uniapp-sqliteplus/xsqlite'; ``` ### 连接数据库 ```javascript // 连接数据库 const db = await DataBase.connect('myDatabase'); // 或者 const db = await xsqlite.open('myDatabase'); ``` ### 创建表 ```javascript // 创建表 await db.createTable('users', (table) => { table.integer('id').pkAutoIncr(); table.string('name', 50).notNull(); table.integer('age').defaultVal(0); }); // 或者获取表操作对象后调用创建表 const userTable = db.table('users'); await userTable.create((table) => { table.integer('id').pkAutoIncr(); table.string('name', 50).notNull(); table.integer('age').defaultVal(0); }); ``` ### 插入数据 ```javascript // 插入单条数据 await db.table('users').insert({name: '张三', age: 25}); // 批量插入数据 await db.table('users').insert([ {name: '张三', age: 25}, {name: '李四', age: 30} ]); ``` ### 查询数据 ```javascript // 查询所有数据 const users = await db.table('users').select({}); // 条件查询 const users = await db.table('users').select({ where: { eq: {age: 25} } }); // 限制查询数量 const users = await db.table('users').select({ limit: [0, 10] // offset, limit }); ``` ### 更新数据 ```javascript // 更新数据 await db.table('users').update({ set: {age: 26}, where: {eq: {name: '张三'}} }); ``` ### 删除数据 ```javascript // 删除数据 await db.table('users').delete({ eq: {name: '张三'} }); ``` ### 事务处理 ```javascript // 开启事务 await db.trans.begin(); try { await db.table('users').insert({name: '王五', age: 28}); await db.table('users').update({ set: {age: 29}, where: {eq: {name: '张三'}} }); // 提交事务 await db.trans.commit(); } catch (error) { // 回滚事务 await db.trans.rollback(); throw error; } ``` ## 完整API文档 ### DataBase 类 #### 静态方法 - `DataBase.connect(name)`: 连接数据库 - `DataBase.disconnect(name)`: 断开数据库连接 - `DataBase.isconnect(name)`: 检查数据库是否已连接 #### 实例方法 - `db.createTable(tableName, callback)`: 创建表 - `db.table(tableName)`: 获取表操作对象 - `db.connect()`: 连接数据库 - `db.disconnect()`: 断开数据库连接 - `db.isconnect()`: 检查数据库是否已连接 - `db.trans.begin()`: 开启事务 - `db.trans.commit()`: 提交事务 - `db.trans.rollback()`: 回滚事务 ### TableCreator 类(表创建) 表创建时可用的字段类型方法: - `string(columnName, length)` / `text(columnName, length)`: 创建TEXT类型字段 - `char(columnName, length)`: 创建CHAR类型字段 - `varchar(columnName, length)`: 创建VARCHAR类型字段 - `integer(columnName, length)` / `int(columnName, length)`: 创建INTEGER类型字段 - `tinyint(columnName, length)`: 创建TINYINT类型字段 - `smallint(columnName, length)`: 创建SMALLINT类型字段 - `mediumint(columnName, length)`: 创建MEDIUMINT类型字段 - `bigint(columnName, length)`: 创建BIGINT类型字段 - `real(columnName, length)`: 创建REAL类型字段 - `double(columnName, length1=12, length2=2)`: 创建DOUBLE类型字段 - `float(columnName, length1=12, length2=2)`: 创建FLOAT类型字段 - `decimal(columnName, length1=12, length2=2)`: 创建DECIMAL类型字段 - `numeric(columnName, length)`: 创建NUMERIC类型字段 - `boolean(columnName)`: 创建BOOLEAN类型字段 - `blob(columnName, length)`: 创建BLOB类型字段 字段约束方法: - `pk()`: 设置为主键 - `pkAutoIncr()`: 设置为主键并自动递增 - `notNull()`: 设置为非空 - `defaultVal(val)`: 设置默认值 示例: ```javascript await db.createTable('users', (table) => { table.integer('id').pkAutoIncr(); // 主键自增ID table.string('name', 50).notNull(); // 非空字符串字段 table.integer('age').defaultVal(0); // 带默认值的整数字段 table.string('email', 100); // 普通字符串字段 }); ``` ### TableExecutor 类 通过 `db.table(tableName)` 获取表操作对象后可以使用以下方法: - `create(callback)`: 创建表 - `drop()`: 删除表 - `exists()`: 检查表是否存在,返回Boolean值 - `insert(data)`: 插入数据 - `select(options)`: 查询数据 - `update(data)`: 更新数据 - `delete(where)`: 删除数据 - `selectLastId()`: 查询最后插入的ID - `trans.begin()`: 开启事务 - `trans.commit()`: 提交事务 - `trans.rollback()`: 回滚事务 #### select方法参数 select方法接收一个options对象,支持以下参数: - `field`: 要查询的列,默认为['*']代表所有列 - `where`: 查询条件对象 - `groupBy`: 分组聚合列数组 - `orderByASC`: 正序排列的列数组 - `orderByDESC`: 倒序排列的列数组 - `limit`: 限制查询行数,格式为[offset, limit] - `having`: group by后的过滤条件 示例: ```javascript const users = await db.table('users').select({ field: ['id', 'name', 'age'], // 查询特定字段 where: { eq: {age: 25}, // age等于25 notEq: {name: 'John'}, // name不等于John gt: {age: 18}, // age大于18 }, orderByASC: ['name'], // 按name正序排列 limit: [0, 10] // 限制10条记录,偏移0 }); ``` #### where条件参数 where条件对象支持以下操作符: - `eq`: 等于,如 {eq: {age: 25}} - `notEq`: 不等于,如 {notEq: {name: 'John'}} - `lt`: 小于,如 {lt: {age: 30}} - `gt`: 大于,如 {gt: {age: 18}} - `le`: 小于等于,如 {le: {age: 25}} - `lg`: 大于等于,如 {lg: {age: 20}} - `like`: 模糊匹配,如 {like: {name: '%John%'}} - `glob`: GLOB模式匹配 - `between`: 范围匹配,如 {between: {age: [18, 30]}} - `notNull`: 非空检查,如 {notNull: ['email', 'phone']} - `in`: 在列表中,如 {in: {id: [1, 2, 3]}} #### update方法参数 update方法接收一个对象或对象数组,每个对象包含: - `set`: 要更新的字段和值 - `where`: 更新条件 示例: ```javascript await db.table('users').update({ set: {age: 26, name: 'Jane'}, where: {eq: {id: 1}} }); ``` #### delete方法参数 delete方法接收一个where条件对象: ```javascript await db.table('users').delete({ eq: {id: 1} }); ``` ### TableIndex 类 通过 `db.table(tableName).index` 获取索引操作对象: - `index.create(indexName, ...columns)`: 创建普通索引 - `index.createUnique(indexName, ...columns)`: 创建唯一索引 - `index.drop(indexName)`: 删除索引 示例: ```javascript // 创建索引 await db.table('users').index.create('idx_name', 'name'); // 创建唯一索引 await db.table('users').index.createUnique('idx_email', 'email'); // 删除索引 await db.table('users').index.drop('idx_name'); ``` ## 许可证 MIT ## 开源地址 gitee https://gitee.com/xueyanjun/uniapp-sqliteplus AND github https://github.com/xueyanjun1992/uniapp-sqliteplus