在我的PhoneGap应用程序中,用户将数据输入到表单字段中,然后将该数据输入到localStorage中,然后输入到webSQL DB中,如:
tx.executeSql('INSERT INTO DEMO (id, data1, data2, data3) VALUES ("'
+ new_id + '"' + ', "' + formdata1Get + '", "' + formdata2Get + '", "' + formdata3Get + '")');
这个作品;我可以看到DB填充在Chrome的开发工具。但是,如何显示整个DB内容?
tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id UNIQUE NOT NULL, data1 TEXT NULL, data2 TEXT NULL, data3 TEXT NULL)');
tx.executeSql('INSERT INTO DEMO (id, data1, data2, data3) VALUES (?, ?, ?, ?)', [id, data1, data2, data3]);
我得到的错误是"Uncaught ReferenceError: id未定义"这是id,如:
[id, data1, data2, data3]);
参考:http://docs.phonegap.com/en/3.0.0/cordova_storage_storage.md.html
理解您所提到的内容,我提供了示例代码来演示这一点。希望符合您的要求。我使用WebSql提供的row列作为唯一字段。
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-serialize-object/2.0.0/jquery.serialize-object.compiled.js"></script>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
</head>
<body>
<form id="test_form" action="" method="post">
Data 1: <input type="text" name="data1"><br>
Data 2: <input type="text" name="data2"><br>
Data 3: <input type="text" name="data3">
<!--<button onclick="StoreData();">Store into localStorage</button>-->
<input type="submit" id="submitButton" name="submitButton" value="Store into localStorage">
</form>
<button onclick="showValues();">Show WebSql Values</button>
<div id="savedValues"/>
<script type="text/javascript" charset="utf-8">
var jsonFormObject;
var dbInstance;
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
dbInstance = window.openDatabase("Database", "1.0", "Test DB", 200000);
dbInstance.transaction(function(tx){tx.executeSql('DROP TABLE IF EXISTS FORMDATA');});
dbInstance.transaction(function(tx){tx.executeSql('CREATE TABLE IF NOT EXISTS FORMDATA (data1 TEXT NULL, data2 TEXT NULL, data3 TEXT NULL)')});
}
function populateDB(tx) {
tx.executeSql('INSERT INTO FORMDATA (data1, data2, data3) VALUES (?, ?, ?)', [jsonFormObject.data1, jsonFormObject.data2, jsonFormObject.data3]);
}
function errorCB(err) {
console.log(err.message);
}
function showValues() {
dbInstance.transaction(function(tx){tx.executeSql('SELECT rowid,* FROM FORMDATA', [], querySuccess, errorCB)}, errorCB);
}
function querySuccess(tx, results) {
var len = results.rows.length;
if(len) {
var html = '<table border=1 width=500 cellpadding=5 cellspacing=0><tr><th>Id</th><th>Data 1</th><th>Data 2</th><th>Data 3</th></tr>';
for (var i=0; i<len; i++){
html += '<tr><td>'+results.rows.item(i).rowid + '</td><td>'+results.rows.item(i).data1 + '</td><td>'+results.rows.item(i).data2 + '</td><td>'+results.rows.item(i).data3+'</tr>';
}
html+='</table>';
$('#savedValues').html(html);
}else{
$('#savedValues').html('No Data found in Database');
}
}
$("#test_form").submit(function(event) {
event.preventDefault();
var formObject = $(this).serializeObject();
console.log(formObject);
// Storing To local Storage
localStorage.setItem('formObject', JSON.stringify(formObject));
// Reading From local Storage
jsonFormObject = JSON.parse(localStorage.getItem('formObject'));
console.log(jsonFormObject);
//Insert into Websql Database
dbInstance = window.openDatabase("Database", "1.0", "Test DB", 200000);
dbInstance.transaction(populateDB, errorCB,function(){console.log('inserted successfully')});
});
</script>
</body>
</html>