SQLite计数并获取Cordova中的其他记录

时间:2016-08-11 04:28:55

标签: sqlite cordova

我的代码片段:

var sql = "SELECT name,data, COUNT(name) as 'mycount' FROM floodMaps WHERE name='?' GROUP BY name,data";
             db.transaction(function(tx) {
                tx.executeSql(sql,[flodMapName], function(tx,res){  
                    //console.log(res.rows.item(0).data);
                     console.log(res.rows.item(0).mycount);
                    if(res.rows.item(0).mycount > 0) {
                        console.log('GETTING DATA FROM DB...');

它会抛出错误:

  

没有错误处理程序的语句失败:无法绑定索引1处的参数,因为索引超出范围。该语句有0个参数。

我试图在同一时间从表中获取数据,但遗憾的是它不起作用。我做了我的研究,我没有找到plugin的好文档。

这就是我创建表格的方式:

document.addEventListener("deviceready", function(){  
    //database
    db = window.sqlitePlugin.openDatabase({name: 'demo.db', location: 'default'}); 
    db.transaction(function(tx) {
        tx.executeSql('CREATE TABLE IF NOT EXISTS floodMaps (name text primary key, data text)');
        tx.executeSql('DELETE FROM floodMaps');
    }, function(error) {
        console.log('Create Table ERROR: ' + error.message);
    }, function() {
        console.log('Table created successfully.');
    });
    //end database
}, false);

整个代码为here

2 个答案:

答案 0 :(得分:2)

我认为?参数占位符是单引号。试试这个:

var sql = "SELECT name, data, COUNT(name) as `mycount` FROM floodMaps WHERE name= ? GROUP BY name, data";

答案 1 :(得分:0)

我猜你根本不必使用单引号来表示别名。您可以按如下方式使用:

SELECT name,data, COUNT(name) as mycount FROM floodMaps WHERE name=?

查看此计数查询示例official link