【发布时间】:2013-12-23 05:11:29
【问题描述】:
我正在尝试将用户凭据保存到内置的数据库表中,并通过在按下登录按钮时删除所有先前的记录并将最新的用户详细信息保存在表中来更新它。 这是我的代码:
//database //
//Transaction success callback
function createDB(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS UserInfo (username , password)');
}
function successCB() {
var db = window.openDatabase("Database", "1.0", "Uinfo", 100000);
db.transaction(queryDB, errorCB);
}
//Transaction error callback
//
function errorCB(err) {
console.log("Error processing SQL: "+err.code);
}
//deleting previous record
function delDB(tx){
tx.executeSql('DELETE FROM UserInfo;')
}
//Query the database
function queryDB(tx) {
tx.executeSql('SELECT * FROM UserInfo', [], querySuccess, errorCB);
}
//Query the success callback
function querySuccess(tx, results) {
var len = results.rows.length;
if (len != null){
console.log("UserInfo table: " + len + " rows found.");
for (var i=0; i<len; i++){
console.log("Row = " + i + " UserName = " + results.rows.item(i).username + " Password = " + results.rows.item(i).password);
username = results.rows.item(i).username;
password = results.rows.item(i).password;
document.getElementById('uNameId').value = username;
document.getElementById('pswd').value = password;
}
}else{
}
}
//populating table
function populateDB(tx) {
tx.executeSql('INSERT INTO UserInfo (username, password) VALUES ('+'"'+userNameInput+'"'+', '+'"'+passwordInput+'"'+')');
}
我正在准备好这些设备:
function DeviceReady() {
var db = window.openDatabase("Database", "1.0", "Uinfo", 100000);
db.transaction(createDB,errorCB,successCB,delDB);
$('#login_button').on('click', function(event) {
userNameInput = $('#uNameId').val();
passwordInput = $('#pswd').val();
db.transaction(populateDB);
window.location = "dashboard.html";
});
document.addEventListener("backbutton", onBackKeyDown, false);
}
当我运行成功创建应用程序表时,最新的用户详细信息正在保存在数据库中,但问题是以前的记录没有被删除。因此,每次在数据库中保存一条新记录。 无法找出删除语句无法正常工作的原因。有什么帮助吗?
【问题讨论】:
-
你从哪里打电话给
delDB(tx)? -
我正在设备上调用它...我已经编辑了问题并将代码放入其中..请看一下
-
db.transaction(createDB,errorCB,successCB,delDB);调用 db 格式错误。 -
那我该怎么写呢?
-
检查我的编辑答案。创建全局变量
var db。通过调用InitDB()在deviceready上初始化它。现在对每个操作使用事务方法。