Phonegapを使用してSQLiteにデータを挿入しようとしています。Android:Phonegap SQLiteの問題
そのハード
tx.executeSql('DROP TABLE IF EXISTS DEMO');
tx.executeSql('DROP TABLE IF EXISTS DEMO');
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
以下のようにコード化されたときに正常に動作しますが、私は
var third = $('#data').val();
alert(third);
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (3,'+ third +')');
次のようにフォームから動的な値を挿入しようとすると、私は
以下のようlogcatで例外を取得04-18 12:20:51.011: I/SqliteDatabaseCpp(7352): sqlite returned: error code = 1, msg = no such column: test, db=/data/data/com.eyepax.phonegap/databases/webview.db
私は失われており、問題を把握できませんでした。誰かが私を助けてくれますか?
フルのjsファイルは、変数の前と後に「追加
function onDeviceReadyStorage() {
var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
}
function populateDB(tx) {
tx.executeSql('DROP TABLE IF EXISTS DEMO');
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
var third = $('#data').val();
alert(third);
tx.executeSql('INSERT INTO DEMO (id, data) VALUES (3,'+ third +')');
}
function errorCB(err) {
alert("Error processing SQL: "+err.code);
}
function successCB() {
alert("success!");
alert("now query...");
var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(queryDB, errorCB);
}
function queryDB(tx) {
tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
// alert("came to query");
}
function querySuccess(tx, results) {
//alert("Query sucess");
// this will be empty since no rows were inserted.
console.log("Insert ID = " + results.rows.item(0).data);
// this will be 0 since it is a select statement
console.log("Rows Affected = " + results.rowsAffected);
// the number of rows returned by the select statement
console.log("Insert ID = " + results.rows.length);
var htmlString = "<ul>";
for(var i = 0; i<results.rows.length; i++){
console.log("Result from DB = " + results.rows.item(i).data);
htmlString = htmlString + "<LI>"+ results.rows.item(i).data +"</LI>"
}
htmlString = htmlString + "</UL>";
$('#myDBData').html(htmlString);
}
あなたは男です。それは魔法のように働いた:) –
+1私から。ありがとう、これは大いに助けになった!! – NSException
これはSQL脆弱性を引き起こす可能性があります。 ?を使用してください?代わりにhttp://stackoverflow.com/a/26058813/1283667に記載されているプレースホルダを使用してください。 (私は広く使われているcordova-sqlite-storageプラグインのメンテナーです) – brodybits