uni-app 急需sqlite插件的封装

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app 急需sqlite插件的封装

官方的文档写的太简洁了,本人js水平也有限,sqlite貌似都是异步的,希望大佬们封装一个插件给我们这些萌新。

万分感谢!

10 回复

内置了啊:https://www.html5plus.org/doc/zh_cn/sqlite.html
在hello uni-app里的接口示例里也有sqlite的示例源码


示例源码只是简单的业务,不可能每个页面都写一大堆sql语句吧,我的意思是类似java里面的ibatis,封装成一个插件,避免重复编写sql。目前在尝试Promise进行封装,但是本人js萌新,不太会。。。。

还有就是同时处理多个业务时,如何做到数据库的及时开启或关闭

回复 9***@qq.com: 解决了吗?我也有这方面的业务需要

楼主解决了么…

楼主解决了么

在hello uni-app里的接口示例里也有sqlite的示例源码…我试了,不行。报plus没有啥的,我选的,运行,内置浏览器。

只能在app上运行

hello的没有事务的例子

在uni-app中封装一个SQLite插件,可以通过使用uni-app官方提供的uni.db API来实现,这个API封装了对SQLite的操作,使得我们可以在跨平台应用中方便地使用SQLite数据库。以下是一个简单的SQLite插件封装示例,这个封装将提供基本的数据库操作方法,如打开数据库、执行SQL语句和查询数据。

首先,我们需要创建一个新的JavaScript文件,例如sqlitePlugin.js,然后在其中封装我们的SQLite操作。

// sqlitePlugin.js
class SQLitePlugin {
    constructor(dbName) {
        this.dbName = dbName;
        this.db = null;
    }

    // 打开数据库
    async openDB() {
        if (!this.db) {
            try {
                this.db = await uni.db.open({
                    name: this.dbName,
                    storeAs: 'default',
                    success: () => {
                        console.log('Database opened successfully');
                    },
                    fail: (err) => {
                        console.error('Failed to open database:', err);
                    }
                });
            } catch (error) {
                console.error('Error opening database:', error);
            }
        }
        return this.db;
    }

    // 执行SQL语句
    async execute(sql, params = []) {
        try {
            const db = await this.openDB();
            await db.exec({
                sql,
                params,
                success: () => {
                    console.log('SQL executed successfully');
                },
                fail: (err) => {
                    console.error('Failed to execute SQL:', err);
                }
            });
        } catch (error) {
            console.error('Error executing SQL:', error);
        }
    }

    // 查询数据
    async query(sql, params = []) {
        try {
            const db = await this.openDB();
            const result = await db.select({
                sql,
                params,
                success: (res) => {
                    return res.result.rows;
                },
                fail: (err) => {
                    console.error('Failed to query data:', err);
                    return [];
                }
            });
            return result;
        } catch (error) {
            console.error('Error querying data:', error);
            return [];
        }
    }
}

// 使用示例
const myDB = new SQLitePlugin('myDatabase');
myDB.openDB().then(() => {
    myDB.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)');
    myDB.execute('INSERT INTO users (name) VALUES (?)', ['Alice']);
    myDB.query('SELECT * FROM users').then(rows => {
        console.log(rows);
    });
});

这个封装类SQLitePlugin提供了打开数据库、执行SQL语句和查询数据的方法。你可以根据需要扩展这个类,添加更多的数据库操作方法。注意,这个示例中的错误处理比较简单,你可以根据实际需求进行更详细的错误处理。

回到顶部