我想知道关于W3C Offline Web Apps的例子。
function renderNotes() {
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS Notes(title TEXT, body TEXT)',
[]);
tx.executeSql(‘SELECT * FROM Notes’, [], function(tx, rs) {
for(var i = 0; i < rs.rows.length; i++) {
renderNote(rs.rows[i]);
}
});
});
}将create table放在'main‘executeSql()之前。如果我这样做会不会更好
$(function() {
// create table 1st
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS Notes(title TEXT, body TEXT)',
[]);
});
// when i execute say to select/modify data, i just do the actual action
db.transaction(function(tx) {
tx.executeSql(‘SELECT * FROM Notes’, [], function(tx, rs) {
...
}
});
db.transaction(function(tx) {
tx.executeSql(‘INSERT ...’, [], function(tx, rs) {
...
}
});
})我在想,我不需要一直重复CREATE IF NOT EXISTS,对吧?
更新
function initDatabase() {
notes = openDatabase("todolist", "1.0", "To-Do List", 1*1024*1024, function (notes) {
notes.changeVersion("", "1.0", function(tx) {
tx.executeSql("CREATE TABLE todolist (id INTEGER, task TEXT)", [], function(tx, rs) {
alert("Table created");
});
});
})
}发布于 2010-06-03 21:20:31
您可以通过使用changeVersion来解决此问题。API支持数据库版本控制,因此您可以在升级期间或在您的情况下应用模式更改。安装。
documentation中有一些示例
function prepareDatabase(ready, error) {
return openDatabase('documents', '1.0', 'Offline document storage', 5*1024*1024, function (db) {
db.changeVersion('', '1.0', function (t) {
t.executeSql('CREATE TABLE docids (id, name)');
}, error);
});
}在该示例中,它们调用prepareDatabase,这将打开一个到数据库的连接,但如果版本低于1.0或不存在,它将调用执行CREATE TABLE语句的闭包。
当页面被重新访问时,假设用户没有清除数据库。它已经是1.0版本了,所以changeVersion将不做任何事情,而不是再次运行CREATE TABLE。
https://stackoverflow.com/questions/2966256
复制相似问题