5***@qq.com
5***@qq.com
  • 发布:2024-08-12 14:22
  • 更新:2024-08-12 14:22
  • 阅读:515

uniapp操作sqlite 没有生成db文件,执行Sql就报错

分类:uni-app

各位大哥, 求教 uniapp操作sqlite   打开连接没报错,但在项目 里没有生成db文件,  执行SQL就报错
"message": "android.database.sqlite.SQLiteException: unknown error (Sqlite code 0 SQLITE_OK): Queries can be performed using SQLiteDatabase query or rawQuery methods only., (OS error - 2:No such file or directory),https://ask.dcloud.net.cn/article/282 !
关于代码 操作封装
/** 数据库是否打开--打开了就返回true,否则返回false

  • @param {Object} name 数据库名称
  • @param {Object} path 数据库地址,uniapp推荐以下划线为开头
    */
    function isOpen(name, path) {
    return plus.sqlite.isOpenDatabase({name,path})
    }

/** 创建数据库或者打开

  • @param {Object} name 数据库名称
  • @param {Object} path 数据库地址,uniapp推荐以下划线为开头
    */
    function openSqlite(name, path) {
    return new Promise((resolve, reject) => {
    //这plus.sqlite只在手机上运行
    plus.sqlite.openDatabase({
    name: name, //数据库名称
    path: path, //数据库地址,uniapp推荐以下划线为开头
    success(e) {
    resolve(e); //成功回调
    },
    fail(e) {
    reject(e); //失败回调
    }
    })
    })
    }

//在该数据库里创建表格/添加数据
//数据库不能存对象,数组 需要转json后再存
/** 执行sql命令 对数据库 执行增删改等操作的SQL语句

  • @param {Object} name 数据库名称
  • @param {Object} sql sql命令
    */
    function executeSql(name, sql) {
    return new Promise((resolve, reject) => {
    plus.sqlite.executeSql({
    name: name,
    sql: sql,
    success(e) {
    resolve(e);
    },
    fail(e) {
    reject(e);
    }
    })
    })
    }

/** 执行查询的SQL语句

  • @param {Object} name 数据库名称
  • @param {Object} sql sql命令
    */
    function selectSql(name, sql) {
    if (name !== undefined) {
    return new Promise((resolve, reject) => {
    plus.sqlite.selectSql({
    name: name,
    sql: sql,
    success(e) {
    resolve(e);
    },
    fail(e) {
    reject(e);
    }
    })
    })
    } else {
    return new Promise((resolve, reject) => {
    reject("错误查询")
    });
    }
    }

/** 关闭数据库

  • @param {Object} name 数据库名称
    */
    function closeSQL(name) {
    return new Promise((resolve, reject) => {
    plus.sqlite.closeDatabase({
    name: name,
    success(e) {
    resolve(e);
    },
    fail(e) {
    reject(e);
    }
    })
    })
    }
    /**
  • 执行事务
  • @param {Object} name 数据库名称
  • @param {Object} operationc begin(开始事务)、commit(提交)、rollback(回滚)
    */
    function transactionDB(name,operationc) {
    return new Promise((resolve, reject) => {
    plus.sqlite.transaction({
    name: name,
    operation: operation,
    success: function(e){
    resolve(operation,'成功!')
    },
    fail: function(e){
    console.log('transaction failed: '+JSON.stringify(e));
    reject(operation,'失败!')
    }
    });
    })
    }

export default {
isOpen,
openSqlite,
selectSql,
executeSql,
closeSQL,
transactionDB
}

引入执行
import sqlite from '@/utils/sqlite'
onLoad() {
let name="test";
let path="_doc/test.db";
sqlite.openSqlite(name,path).then((resRun) => {
console.log(resRun);
}).catch((err) => {
uni.showToast({
title: '打开sqlite失败',
icon:'error',
duration: 2000, //提示的延迟时间,单位毫秒,默认:1500
mask:false,
// image:'./image.png',//自定义图标的本地路径
});
console.error('打开sqlite失败', err);
return
});
let sqlCreateTable ="CREATE TABLE IF NOT EXISTS msg_list(id INTEGER PRIMARY KEY autoincrement,phone INTEGER,msgId INTEGER,sender INTEGER,nickname VARCHAR(50),picture VARCHAR(400), msgType INTEGER,sendType INTEGER,dataUrl VARCHAR(500),message VARCHAR(4000),status INTEGER,sendTime TEXT,sendTimeUnix INTEGER);";
sqlite.executeSql(name,sqlCreateTable).then((resRun) => {
console.log(resRun);
}).catch((err) => {
uni.showToast({
title: '执行建表sqlite失败',
icon:'error',
duration: 2000, //提示的延迟时间,单位毫秒,默认:1500
mask:false,
// image:'./image.png',//自定义图标的本地路径
});
console.error('执行建表sqlite失败', err);
return
});
let tableSql="SELECT * FROM sqlite_master WHERE TYPE='table'";
console.log(tableSql);
sqlite.executeSql(name,tableSql).then((result) => {
console.log(result);
let res=JSON.stringify(result);
console.log(res);
}).catch((errs) => {
uni.showToast({
title: '查询全表失败',
icon:'error',
duration: 2000, //提示的延迟时间,单位毫秒,默认:1500
mask:false,
// image:'./image.png',//自定义图标的本地路径
});
console.log(errs);
});

    }  
2024-08-12 14:22 负责人:无 分享
已邀请:

要回复问题请先登录注册