gpt4 book ai didi

sqlite - executeSql 将结果作为错误抛出

转载 作者:行者123 更新时间:2023-12-02 15:47:35 24 4
gpt4 key购买 nike

我不明白为什么下面的代码会这样工作:所有结果都进入 catch block 。 “select * from danceMoves”之后的最后一个 catch block 实际上会将“swag”写入控制台。

这是一个使用 ionic start 创建的简单项目,然后添加 cordova-sqlite-storage。遵循 Ionic 站点文档。

public testSQLite() {
this.sqlite.create({
name: 'data.db',
location: 'default'
})
.then((db: SQLiteObject) => {
db.executeSql('create table if not exists danceMoves(name VARCHAR(32))')
.then(() => { debugger; console.error('Executed SQL') })
.catch(e => { debugger; console.error(e) })
.then(() => { debugger; return db.executeSql("insert into danceMoves(name) values('swag')") })
.then(() => { debugger; return db.executeSql("select * from danceMoves") })
.then(result => { debugger; console.log(result.rows.item(0).name) })
.catch(error => { debugger; console.error(error) })
.then(() => { debugger; return db.executeSql("select * from danceMoves") })
.then(result => { debugger; console.log(result.rows.item(0).name) })
.catch(result => { debugger; console.log(result.rows.item(0).name)});
})
.catch(e => { debugger; console.error(e) });
}

最佳答案

好吧,我找到了一个可能的解决方案(至少它解决了我的问题)。executeSql 方法需要两个参数:一个语句和一个参数数组。

该语句可能包含参数(例如 SELECT * FROM table WHERE id=?),这些参数使用 params 数组中给定的对象进行解析(例如 [1] )。

params 数组参数被标记为可选,因为可以在没有参数的情况下工作。但是,如果未给出数组,则查询的结果集将作为错误抛出,而不是返回它。为了解决这个问题,我总是指定一个空数组作为第二个参数,这为我解决了这个问题。

调用示例:db.executeSql(SELECT * FROM danceMoves, []).then(result => console.log(result.rows.item(0).name)

关于sqlite - executeSql 将结果作为错误抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52659531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com