更新记录

1.0.0(2024-07-23)

iOS、安卓Sqlite


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.99,Android:5.0,iOS:11,HarmonyNext:不确定 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

yzc-sqlite 兼容安卓、iOS端

SqliteManager类基础用法示例

// 导入
import { SqliteManager } from '@/uni_modules/yzc-sqlite';
const kTableName = 'testTable1'
// 优先设置数据库,目前只支持全局一个数据库
SqliteManager.setupSqlite('test', '<&&>')
SqliteManager.executeSql(`DROP TABLE ${kTableName}`, (result) => { // 删除表
   if(result.errCode == 0) {
       console.log('删除表成功')
   } else {
       console.log('表不存在,或者删除失败', result.errMsg)
   }
})
// 执行sql语句
SqliteManager.executeSql(`create table if not exists ${kTableName} (id integer)`, (result) => {
    if (result.errCode == 0 && result.data[0]) {
        console.log('创建表成功')
    } else {
        console.log('创建表失败')
    }
})
// 查询sql语句
SqliteManager.selectSql(`select count(*) as isTable FROM sqlite_master where type='table' and name='${kTableName}'`, (result) => {
    if (result.errCode == 0) {
        console.log('表存在')
    } else {
        console.log('表不存在')
    }
})
// 执行事务
SqliteManager.transaction('begin', (success, errMsg) => {
    if (success) {
        SqliteManager.executeSql(`alter table ${kTableName} add column field1 text <&&> alter table ${kTableName} add column field2 text`, (result) => {
            if (result.errCode == 0) {
                console.log('执行commit')
                SqliteManager.transaction('commit', (success, errMsg) => {
                    if (success) {
                        SqliteManager.queryDBAllTable((result) => {
                            console.log('查询所有表', result)
                        })
                    }
                })
            } else {
                console.log('执行rollback', result.sql)
                SqliteManager.transaction('rollback', (success, errMsg) => {
                })
            }
        })
    }
})
// 关闭数据库
// SqliteManager.close()

SqliteManager类拓展用法示例

// 导入
import { SqliteManager } from '@/uni_modules/yzc-sqlite';
SqliteManager.setupSqlite('test', null)
const kTableName = 'testTable1'
// 查询数据库所有表
SqliteManager.queryDBAllTable(result => {
    console.log(result.data)
})
// 判断表是否存在
SqliteManager.isTableExist(kTableName, (exit, errMsg) => {
    if (exit) { // 存在
        // 删除表
        SqliteManager.deleteTable(kTableName, (success, errMsg) => {
            if (success) {
                console.log('删除表成功')
            } else {
                console.log('删除表失败')
            }
        })
    }
})
// 创建表
SqliteManager.createTable(kTableName, 'field1 text', (success, errMsg) => {
    if (success) {
        console.log('创建表成功')
    } else {
        console.log('创建表失败')
    }
})
// 表新增字段
SqliteManager.tableAddColumns(kTableName, {field2: 'string', field3: 'integer'}, (success, errMsg) => {
    if (success) {
        console.log('新增表字段成功')
    } else {
        console.log('新增表字段失败')
    }
})
// 查询数据库所有表
SqliteManager.queryDBAllTable(result => {
    console.log(result.data)
})
// 添加数据
for (var i = 0; i < 5; i++) {
    SqliteManager.insertModel(kTableName, 'field1,field2,field3', `${(i > 2 ? 1 : 0) + ''},${2 * i + ''},${3 * i}`, (success, errMsg) => {
        if (success) {
            console.log('添加数据成功')
        } else {
            console.log('添加数据失败')
        }
    })
}
// 查询数据 无筛选条件
SqliteManager.queryModelList(kTableName, null, null, null, null, (success, errMsg, list) => {
    console.log(list)
})
// 查询数据
SqliteManager.queryModelList(kTableName, {field1: '0'}, 'field3 > 3', 'field3', 'ASC', (success, errMsg, list) => {
    console.log(success, list)
})
// 查询表数据总条数
SqliteManager.queryTableDataListCount(kTableName, {field1: '0'}, 'field3 > 3',(success, count, errMsg) => {
    console.log(count)
})
// 分页查询数据
SqliteManager.queryModelPageList(kTableName, 1, 10, null, 'field3 > 3', 'field3', 'DESC', (success, errMsg, list, currentPage, totalPage) => {
    console.log(list, totalPage)
})
// 更新数据
SqliteManager.updateTableData(kTableName, {field1: '3'}, {field2: 2}, 'field3 > 0', (success, errMsg) =>{
    if (success) {
        console.log('更新数据成功')
    } else{
        console.log('更新数据失败')
    }
})
// 删除数据
SqliteManager.deleteTableData(kTableName, {field1: '1'}, 'field3 = 12', (success, errMsg) => {
    if (success) {
        console.log('删除数据成功')
    } else{
        console.log('删除数据失败')
    }
})
// 查询数据
SqliteManager.queryModelList(kTableName, {field1: '0'}, 'field3 > 3', 'field3', 'ASC', (success, errMsg, list) => {
    console.log(list)
})

为了简化繁琐的sql代码,更关注业务逻辑,提供了SqliteModel类处理一些自定义对象嵌套的问题

  • 比如示例中新建一个uts文件(TestModelSaveUtil.uts)专门用于处理存储对象的的逻辑,代码如下

  • ⚠️ 若示例项目中pages\index\manager\TestModelSaveUtil.uts无法查看,新建一个TestModelSaveUtil.uts文件将以下的代码复制进该文件替换掉无法查看的TestModelSaveUtil.uts

    // TestModelSaveUtil.uts
    import { SqliteModel } from "@/uni_modules/yzc-sqlite"
    export type AddressModel = {
    country: string,
    city: string
    }
    export type UserModel = {
    user_id: string,
    name: string,
    age: number,
    address?: AddressModel | null // 存储时将其转为json字符串
    }
    export const userTableName = 'User_Table'
    let shareInstance: SqliteModel | null = null
    export function getShareInstance(): SqliteModel {
    if (shareInstance == null) {
        // 需要一个模版对象 便于SqliteModel类根据对象分析字段和类型创建表描述
        const templateModel = {
            user_id: '',
            name: '',
            age: 0,
            address: {
                country: '',
                city: ''
            } as AddressModel
        } as UserModel;
        const instance = new SqliteModel(userTableName, templateModel, null, false, ['address'])
        shareInstance = instance
    }
    return shareInstance as SqliteModel
    }
    export function destoryShareInstance() {
    shareInstance = null
    }
  • 在需要处理的文件中引入

// 导入
import { SqliteManager } from '@/uni_modules/yzc-sqlite';
import { UserModel, AddressModel, getShareInstance } from './manager/TestModelSaveUtil.uts'
  • 具体使用的代码示例
// 导入
    SqliteManager.setupSqlite('test', null)
const shareInstance = getShareInstance()
// 删除表
shareInstance.deleteModelTable((success: boolean, errMsg: string) => {
    console.log('删除表', success, errMsg)
})
// 表不存在就创建表
shareInstance.createModelTable((success: boolean, errMsg: string) => {
    console.log('创建表', success, errMsg)
})
// 添加数据
for (var i = 0; i < 5; i++) {
    const model = {
        user_id: i.toString(),
        name: 'name' + i,
        age: 18 + i,
        address: {
            country: 'country' + i,
            city: 'city' + i
        } as AddressModel
    } as UserModel;
    // 插入数据
    shareInstance.insertModel(model, (success: boolean, errMsg: string) => {
        console.log('插入数据', success, errMsg)
    })
}
//查询数据
shareInstance.queryModelList(null, null, null, null, (success: boolean, errMsg: string, list: string[]) => {
    const jsonStr = list[0]
    const model = JSON.parse<UserModel>(jsonStr)
    console.log('查询数据', success, errMsg, model?.user_id, model?.address?.country)
})
// 修改更新数据
shareInstance.updateTableData({age: 30}, {user_id: '1'}, null, (success: boolean, errMsg: string) => {
    console.log('修改数据', success, errMsg)
})
// 删除数据
shareInstance.deleteTableData({user_id: '2'}, null, (success: boolean, errMsg: string) => {
    console.log('删除数据', success, errMsg)
})
// 分页查询
shareInstance.queryModelPageList(1, 20, null, null, null, null, (success: boolean, errMsg: string, list: string[], currentPage: number, totalPage: number) => {
    for (var i = 0; i < list.length; i++) {
        const jsonStr = list[i]
        const model = JSON.parse<UserModel>(jsonStr)
        console.log('分页查询', model?.user_id, model)
    }
})
// 新增表字段
shareInstance.modelTableAddColumns({phoneNum: 'string'}, (success: boolean, errMsg: string) => {
    console.log('新增字段', success, errMsg)
})

// 查询所有表
SqliteManager.queryDBAllTable((result) => {
    console.log('查询所有表', result)
})
  • ⚠️ 若示例项目中main.uts无法查看,新建一个main.uts文件将以下的代码复制进该文件替换掉无法查看的main.uts
    // main.uts
    import App from './App.uvue'
    import { createSSRApp } from 'vue'
    export function createApp() {
    const app = createSSRApp(App)
    return {
        app
    }
    }
  • ⚠️ 若示例项目中pages\index\manager\TestModelSaveUtil.uts无法查看,上文以说明,可查看相关说明

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问