Android Phonegap数据库

时间:2012-03-05 07:02:07

标签: android database cordova

我正在使用以下代码从数据库中获取数据并在列表视图中显示内容。但是每次加载应用程序时我都不想创建数据库...我只想创建一次...但是每当应用程序关闭时,数据库都会被删除。我希望它能保留,以便下次可以在不创建数据的情况下添加数据。

var arr = new Array();
var a;
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(populateDB, errorCB, successCBc);
function populateDB(tx) {
  tx.executeSql('DROP TABLE IF EXISTS CUSTOMER');
  tx.executeSql('CREATE TABLE IF NOT EXISTS CUSTOMER (phno unique, fname, mname, lname, address, email)');
  tx.executeSql('INSERT INTO CUSTOMER (phno, fname, mname, lname, address, email) VALUES (16, "shank","p","ram","addresssss","emailaddress")');
};
function queryDB(tx) {
  tx.executeSql('SELECT * FROM CUSTOMER', [], querySuccess, errorCB);
}
function querySuccess(tx, results) {
  var len = results.rows.length;
  for (var i=0; i<len; i++){
    $('#home').append('<li><a href="#artists">'+results.rows.item(i).phno+'<br>'+results.rows.item(i).fname+'</a></li>').listview("refresh");
  }
};
function errorCB(err) {
  console.log("Error processing SQL: "+err.code);
}
function successCBc() {
  var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
  db.transaction(queryDB, errorCB);
};

3 个答案:

答案 0 :(得分:2)

从代码中删除该行,它有效!!

tx.executeSql('DROP TABLE IF EXISTS CUSTOMER');

答案 1 :(得分:1)

答案 2 :(得分:0)

根据您的代码,您将在populateDB()上删除表。尝试从populateDB()中删除以下行并再次检查数据库状态。

tx.executeSql('DROP TABLE IF EXISTS CUSTOMER');

同样要么从表创建脚本中删除唯一约束,请使用以下

替换现有代码
var randomId = new Date().getTime();
tx.executeSql('INSERT INTO CUSTOMER (phno unique, fname, mname, lname, address, email) VALUES ("'+ randomId +'", "shank","p","ram","addresssss","emailaddress")');

同时检查jQuery Mobile库是否正确加载,否则它将只打印第一条记录然后停止执行。