我正在使用Ionic和SQLITE数据库开发移动应用程序。我想要一个不应该为Inventory操作插入两次相同记录的场景。我按如下方式检查数据库:
var query = "SELECT COUNT(*) FROM productScan WHERE uniqueId = (?) AND sync = \'N\'";
$cordovaSQLite.execute(db, query, [uniqueId]).then(function (res) {
alert(JSON.stringify(res));
}, function (err) {
alert(JSON.stringify(err));
});
这里发生的事情是当我第一次安装应用程序并运行它然后在扫描操作后执行此代码进行重复检查时,即使数据库中没有记录,它也会给出以下输出
{"rows":{"length":1},""rowsAffected":0}
我是结构化查询语言(SQL)的新手。我无法解析结果。结果出了问题。是否需要重新格式化查询或以任何不同的方式实现目标?
感谢您的时间。
答案 0 :(得分:1)
我是这样做的
JSON.stringify(data.rows.item(0)['COUNT(*)'])
答案 1 :(得分:1)
做到这一点的最佳方法是将ALIAS赋予COUNT(*)。
类似的东西
db.executeSql("select count(*) AS TOTAL from mydebit where aid = ?", [
parseInt(this.mydata)
]);
然后
console.log(data.rows.item(0).TOTAL)
因此我们可以轻松地将名称指定为返回结果,并使用来获取行值 干杯..... !!!!!!!!!
答案 2 :(得分:0)
不知何故,我设法以不同的方式实现它
var query = "SELECT * FROM productScan WHERE uniqueId = (?) AND sync = \'N\'";
$cordovaSQLite.execute(db, query, [uniqueId]).then(function (res) {
if (res.rows.length == 0) {
//processed the operation
}else{
alert('You have already scanned this asset!.');
}
答案 3 :(得分:0)
var query = "SELECT COUNT(*) FROM productScan WHERE uniqueId = (?) AND sync = \'N\'";
$cordovaSQLite.execute(db, query, [uniqueId]).then(function (res) {
just parse the result,(json.parse(res)) and find by rowsAffected like
if(rowsAffected != 0)
{
//just do the operation
}
else {
//terminate
}