我正在尝试进行简单的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",
},
}
答案 0 :(得分:0)
执行以下操作。
executarComando(strSql, params = []) {
return new Promise((resolve, reject) => {
db.transaction((tx) => {
tx.executeSql(strSql, params,
(_, result) => resolve(result),
(_, err) => reject(err));
});
});
}
它将为您提供实际的错误,而不是事务对象。
顺便说一句,值得一提的是,您应该始终保护查询免受sql注入。您可以通过用?
替换直接串联的值,并将它们传递给executeSql
方法来实现:
const strSelect = `
SELECT true AS existe FROM tb0101_Usuarios WHERE
nomeUSUARIO=? AND
cnpjUSUARIO=?
`;
const res = await executarComando(strSelect, [nomeUsuario, cnpjUsuario]);