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});
}

此外,建议检查以下几点:

  1. 确保数据库打开成功后再执行查询操作,可以在打开数据库成功的回调中初始化表结构。

  2. 确认查询的 SQL 语句语法正确,例如:

this.sqlUtil.select("SELECT * FROM audio", (res) => {
    console.log(res)
})
回到顶部