0

PhoneGapを使用してカメラアプリに取り組んでいます。

私が達成しようとしていることは、アプリが写真を撮り、その写真をアプリディレクトリに保存するときに、ファイルの名前、パス、アップロードされたフラグエントリも含むエントリをデータベースに挿入したいということです。

私はこれを行うのに問題があります。そして、どこで問題が発生しているのかわかりません。

データベースとテーブルを作成し、エントリを挿入するために使用されるコードを以下に示します。ファイルがすでに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も呼び出されません。

こちらをご覧ください。私はモバイル開発に不慣れで、今からずっとこれに固執しています。

よろしくお願いします

4

2 に答える 2

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);
}

ただし、このメソッドは、そのトランザクションを提供する2番目のデータベースを作成しているが、最初のデータベースのテーブルをクエリしているため、期待どおりに機能しません。

以下は、両方に同じテーブルを持つ2つのデータベースを作成する完全なソースの例です。

https://gist.github.com/3058562

于 2012-07-06T07:14:03.843 に答える
0

phonegapについてはよくわかりませんが、createtableステートメントにはいくつかのタイプが欠けているようです。

また、この行:

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

ファイル名とは何ですか?

于 2012-07-05T23:40:18.327 に答える