PhoneGap中的数据库条目问题。

时间:2012-07-05 23:32:28

标签: javascript database cordova

我正在使用PhoneGap开发相机应用程序。

我想要完成的事情是,当我的应用程序拍照并将图片存储在app目录中时,我想在数据库中插入一个条目,其中包含文件名,路径和上传的标志条目。

我在做这件事时遇到了麻烦。我不确定问题出在哪里。

用于创建数据库和Table然后插入条目的代码如下所示。在文件已保存在app目录中后,我调用“insertInTable”函数。

 function insertInTable(name, path)
{
    var db = window.openDatabase('taukydb', '1.0', 'Tauky Database', 200000);
    db.transaction(populateDB, errorCB, successCB);
    //db.transaction(successCB, errorCB, );

    //return();
}

function populateDB(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS taukytb (name UNIQUE, path, uploaded)');
    tx.executeSql('INSERT INTO taukytb (name, path, uploaded) VALUES (filename, filepath, 0)');

}

// Transaction success callback
function successCB() {
    alert("Hurrey!!!");

    //this is just for testing
    var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
    db.transaction(queryDB, errorCB);               
}

function queryDB(tx) {
    tx.executeSql('SELECT * FROM taukytb', [], querySuccess, errorCB);
}


function querySuccess(tx, results) {
    var len = results.rows.length;
    alert(len);
}

// Transaction error callback
function errorCB1(err) {            
    alert("Error 11111 processing SQL: "+err.code);
    //console.log("Error processing SQL: "+err.code);

}

// Transaction error callback
function errorCB(err) {         
    alert("Error processing SQL: "+err.code);
    //console.log("Error processing SQL: "+err.code);

}

当我运行此代码时,函数“succesCB”永远不会被调用,也不会调用errorCB。

请看看这个。我是移动开发的新手,从那时起我就一直坚持这一点。

提前感谢

2 个答案:

答案 0 :(得分:1)

我做了一些改动以使其发挥作用。

tx.executeSql('INSERT INTO taukytb (name, path, uploaded) VALUES ("'+filename+'", "'+filepath+'", 0)');

此更改将调用successCB,因为查询执行正常。

function successCB() {
    alert("Hurrey!!!");

    //this is just for testing
    var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
    db.transaction(queryDB, errorCB);               
}

function queryDB(tx) {
    tx.executeSql('SELECT * FROM taukytb', [], querySuccess, errorCB);
}

然而,此方法无法正常工作,因为您正在创建第二个数据库,提供该事务但随后查询第一个数据库的表。

以下是完整的源代码示例,该示例在

中创建两个具有相同表的数据库

https://gist.github.com/3058562

答案 1 :(得分:0)

对phonegap不太了解,但是创建表语句似乎缺少某些类型。

这一行:

tx.executeSql('INSERT INTO taukytb (name, path, uploaded) VALUES (filename, filepath, 0)');

什么是文件名?