gpt4 book ai didi

javascript - 世博会 SQLite promise 拒绝

转载 作者:行者123 更新时间:2023-12-01 01:32:16 26 4
gpt4 key购买 nike

我正在尝试进行简单的 SQLite 操作(例如选择和插入),但它根本不起作用。

这是我的功能:

executarComando(strSql) {

return new Promise((resolve, reject) => {
db.transaction((tx) => {
tx.executeSql(strSql, [], (tx, result) => {
resolve(result);
}, (err) => {
reject(err);
})
},
null,
null)
});
}

我称之为:

    const strSelect = `
SELECT true AS existe FROM tb0101_Usuarios WHERE
nomeUSUARIO='${nomeUsuario}',
cnpjUSUARIO='${cnpjUsuario}'
`;
const res = await executarComando(strSelect);

以及它在我的控制台日志中抛出的警告/错误:

Possible Unhandled Promise Rejection (id: 0):
WebSQLTransaction {
"_complete": true,
"_error": null,
"_running": false,
"_runningTimeout": false,
"_sqlQueue": Queue {
"first": undefined,
"last": undefined,
"length": 0,
},
"_websqlDatabase": WebSQLDatabase {
"_currentTask": null,
"_db": SQLiteDatabase {
"_closed": false,
"_name": "TitaniumApp.db",
},
"_running": false,
"_txnQueue": Queue {
"first": undefined,
"last": undefined,
"length": 0,
},
"version": "1.0",
},
}

最佳答案

执行如下操作。

executarComando(strSql, params = []) {
return new Promise((resolve, reject) => {
db.transaction((tx) => {
tx.executeSql(strSql, params,
(_, result) => resolve(result),
(_, err) => reject(err));
});
});
}

它会给您实际的错误,而不是事务对象。

顺便说一句,值得一提的是,您应该始终保护您的查询免受 SQL 注入(inject)。您可以通过简单地将直接连接的值替换为 ? 并将它们传递给 executeSql 方法来实现:

const strSelect = `
SELECT true AS existe FROM tb0101_Usuarios WHERE
nomeUSUARIO=? AND
cnpjUSUARIO=?
`;
const res = await executarComando(strSelect, [nomeUsuario, cnpjUsuario]);

关于javascript - 世博会 SQLite promise 拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53160742/

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