【问题标题】:Issue with database entry in PhoneGap.PhoneGap 中的数据库条目问题。
【发布时间】:2012-07-05 23:32:28
【问题描述】:

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

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

我在执行此操作时遇到了麻烦。而且我不确定问题出在哪里。

用于创建数据库和表然后插入条目的代码如下所示。在文件已保存在应用程序目录中后,我调用“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 也不会被调用。

请看看这个。我是移动开发的新手,从现在开始我就一直坚持这一点。

提前致谢

【问题讨论】:

  • 只需粘贴错误日志并立即给您答案:).. 虽然没有调用函数。我需要检查一些配额日志...

标签: javascript database cordova


【解决方案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

【讨论】:

    【解决方案2】:

    对phonegap了解不多,但是那个create table语句好像少了一些类型。

    还有这一行:

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

    什么是文件名?

    【讨论】:

    • 文件名和文件路径是可变的,它们工作正常。
    猜你喜欢
    • 2011-05-15
    • 2011-03-30
    • 2018-05-07
    • 1970-01-01
    • 2012-12-07
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    相关资源
    最近更新 更多