uni-app sqlite 可以插入数据,但查询时不报错也无响应。
uni-app sqlite 可以插入数据,但查询时不报错也无响应。
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:win10
HBuilderX类型:正式
HBuilderX版本号:3.1.9
手机系统:Android
手机系统版本号:Android 7.0
手机厂商:模拟器
手机机型:nox
页面类型:vue
打包方式:离线
项目创建方式:HBuilderX
操作步骤:
// #ifdef APP-PLUS
let sqlUtil=function(){
let name='audio';
let path="_doc/lb.db";
plus.sqlite.openDatabase({
name: name,
path: path,
success: function(e){
console.log("打开数据库成功!")
},
fail: function(e){
// console.log('openDatabase failed: '+JSON.stringify(e));
console.log("打开数据库失败!"+JSON.stringify(e))
}
});
return {
/**
* 关闭数据库
*/
close:function(){
plus.sqlite.closeDatabase({
name: name
})
},
select:function(sql,callbak){
console.log("开始查询:"+sql)
plus.sqlite.selectSql({
name:name,
sql:sql,
success: function(data){
console.log('selectSql success: '+JSON.stringify(e));
callbak({status:"ok",data:data});
},
fail: function(e){
console.log('selectSql failed: '+JSON.stringify(e));
callbak({status:"err",data:e});
}
});
},
update:function(sql,callbak){
console.log("执行sql:"+sql)
plus.sqlite.executeSql({
name: name,
sql: sql,
success: function(e){
callbak({status:"ok",data:e});
},
fail: function(e){
callbak({status:"err",data:e});
}
});
}
};
}
let sqlutilObj=sqlUtil();
/**
* 建表
*/
let audioSql= "create table if not exists audio (id INTEGER PRIMARY KEY, type INTEGER NOT NULL , name TEXT NOT NULL ,author TEXT NULL DEFAULT NULL ,anchor TEXT DEFAULT NULL ,source TEXT DEFAULT NULL ,sourceUrl TEXT DEFAULT NULL ,status INTEGER DEFAULT NULL ,synopsis TEXT COMMENT )";
sqlutilObj.update(audioSql,(data)=>{
if(data.status=="ok"){
console.log("主表建表成功")
}else{
console.log("主表建表失败"+JSON.stringify(data.data))
}
})
let chapterSql= "create table if not exists chapter ( cid INTEGER NOT NULL PRIMARY KEY, aid INTEGER NOT NULL, cName TEXT NOT NULL, cNumber INTEGER NOT NULL, cUrl TEXT NOT NULL, cLocal TEXT DEFAULT NULL) ";
sqlutilObj.update(chapterSql,(data)=>{
if(data.status=="ok"){
console.log("副表建表成功")
}else{
console.log("副表建表失败"+JSON.stringify(data.data))
}
})
Vue.prototype.sqlUtil=sqlutilObj;
// #endif
新建表成功,查询无响应
预期结果: 应返回成功或错误信息
实际结果: 查询无响应
bug描述:
select:function(sql,callbak){
console.log("开始查询:"+sql)
plus.sqlite.selectSql({
name:name,
sql:sql,
success: function(data){
console.log('selectSql success: '+JSON.stringify(e));
callbak({status:"ok",data:data});
},
fail: function(e){
console.log('selectSql failed: '+JSON.stringify(e));
callbak({status:"err",data:e});
}
});
},
update:function(sql,callbak){
console.log("执行sql:"+sql)
plus.sqlite.executeSql({
name: name,
sql: sql,
success: function(e){
callbak({status:"ok",data:e});
},
fail: function(e){
callbak({status:"err",data:e});
}
});
}
更多关于uni-app sqlite 可以插入数据,但查询时不报错也无响应。的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app sqlite 可以插入数据,但查询时不报错也无响应。的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在您的代码中,查询无响应的主要原因是 selectSql 方法中的 success 回调函数存在变量名错误。您使用了未定义的变量 e,应该改为 data:
success: function(data){
console.log('selectSql success: '+JSON.stringify(data)); // 将 e 改为 data
callbak({status:"ok",data:data});
}
此外,建议检查以下几点:
-
确保数据库打开成功后再执行查询操作,可以在打开数据库成功的回调中初始化表结构。
-
确认查询的 SQL 语句语法正确,例如:
this.sqlUtil.select("SELECT * FROM audio", (res) => {
console.log(res)
})

