首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML5数据库事务

HTML5数据库事务
EN

Stack Overflow用户
提问于 2010-06-03 21:15:43
回答 1查看 6K关注 0票数 3

我想知道关于W3C Offline Web Apps的例子。

代码语言:javascript
复制
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()之前。如果我这样做会不会更好

代码语言:javascript
复制
$(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,对吧?

更新

代码语言:javascript
复制
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");
            });
        }); 
    })
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-03 21:20:31

您可以通过使用changeVersion来解决此问题。API支持数据库版本控制,因此您可以在升级期间或在您的情况下应用模式更改。安装。

documentation中有一些示例

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2966256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档