我已经完成了一个程序来插入和更新sqlite数据库中的记录,并在Websql中查看数据库中的数据。
我创建了文本框字段,当我们输入数据时,通过单击提交按钮将其存储在数据库中。
我无法使用在文本框中输入的新值更新数据库中的记录。
但是我可以在数据库中插入数据,并且无法更新数据库中的值。
这是我的编码。
var updateStatement = "UPDATE login SET username=?,password=?,firstname = ?, lastname = ? ,hobby=?,email=? WHERE id=?";
var db=window.openDatabase('MYFORM','1.0','MYFORM',200000);
$(document).ready(function()
{
initDatabase();
$("#update").click(updateRecord);
});
function initDatabase() // Function Call When Page is ready.
{
try {
if (!window.openDatabase) // Check browser is supported SQLite or not.
{
alert('Databases are not supported in this browser.');
}
else {
showRecords();
}
}
catch (e) {
if (e == 2) {
// Version number mismatch.
console.log("Invalid database version.");
} else {
console.log("Unknown error " + e + ".");
}
return;
}
}
function updateRecord() // Get id of record . Function Call when Delete Button Click..
{
var usernamenew = $('input:text[id=username]').val().toString();
var passwordnew = $('input:password[id=pass]').val().toString();
var firstnamenew = $('input:text[id=firstname]').val().toString();
var lastnamenew = $('input:text[id=lastname]').val().toString();
var hobbynew = $('input:text[id=hobby]').val().toString();
var emailnew= $('input:text[id=email]').val().toString();
var useridnew = $("#id").val();
db.transaction(function (tx) { tx.executeSql(updateStatement, [usernamenew,passwordnew,firstnamenew, lastnamenew,hobbynew,emailnew,Number(useridnew)],loadAndReset, onError) });
}
HTML
<label for="username"> Username :</label>
<label for="pass"> Password :</label>
<input name="password" type="password" id="pass" placeholder="your password" size="20" maxlength="20" width="20" />
<label for="firstname"> Firstname :</label>
<input type="text" name="firstname" id="firstname" placeholder="your full name"/>
<label for="lastname"> Lastname :</label>
<input type="text" name="lastname" id="lastname" placeholder="your last name"/>
<label for="hobby"> Hobby : </label>
<input type="text" name="hobby" id="hobby" placeholder="your hobby" /><br ><br >
<label for="email"> Email :</label>
<input type="text" name="email" id="email" placeholder="Your email address"/><br >
<br >
<a href="#" class="ui-btn ui-btn-inline ui-corner-all ui-btn-b "id="update" type="submit" >Update</a>
更新的问题
我还有一个名为showRecords()的函数,一旦我们调用该函数,它将以列表的形式显示所有记录,并且我在列表中有一个编辑按钮,如果我单击该编辑按钮,它应该加载特定的编辑框中的下一页记录.. .. ..
如果我们点击 id = 1 ,则应在编辑框的下一页中使用 id = 1 的loadRecords()函数加载记录,并且类似于其他相应的ID&#39; S
我可以知道如何实现这个PLZ的帮助..
showRecords函数的编码
function showRecords() // Function For Retrive data from Database Display records as list
{
$("#results").html('')
db.transaction(function (tx) {
tx.executeSql(selectAllStatement, [], function (tx, result) {
dataset = result.rows;
for (var i = 0, item = null; i < dataset.length; i++) {
item = dataset.item(i);
var linkeditdelete = '<ul><li>' + item['username'] + ' , ' + item['password'] + ' ,' +item['firstname']+' , ' + item['lastname'] +' , ' + item['hobby']+','+item['email']+ '<a href="page4.html" onclick="loadRecord(' + 'id' + ') id="edit";">edit</a>' +' ' + '<a href="#" onclick="deleteRecord(' + item['id'] + ');">delete</a></li></ul>';
$("#results").append(linkeditdelete);
}
});
});
}
function loadRecord(i)
{
var item = dataset.item(i);
$("#username").val((item['username']).toString());
$("#pass").val((item['password']).toString());
$("#firstname").val((item['firstname']).toString());
$("#lastname").val((item['lastname']).toString());
$("#hobby").val((item['hobby'])).toString();
$("#email").val((item['email']).toString());
$("#id").val((item['id']).toString());
}
答案 0 :(得分:0)
也许您在创建表格时或在您确定了正确的ID(事务必须替换值)时遗漏了某些内容。
我在JSFiddle上插入了你的版本,并且还提出了创建和插入的查询
作品。
看看这个
http://jsfiddle.net/jm6bubp9/
首先运行这些
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS login (id , username, password, firstname, lastname, hobby, email )');
});
db.transaction(function (tx) {
tx.executeSql("INSERT INTO login values (55,2,3,4,5,6,7)") });
}