Javascript WebSQL始终使用一个事务对象

时间:2015-10-24 18:53:35

标签: javascript

你好我有工厂提供与数据库一起工作的功能,它看起来像这样:

.factory('DBwork', function () {
 var db = openDatabase("...");
 db.transaction(function(tx){
     tx.executeSql("CREATE TABLE...");
 });

 var factoryfunctions = {
     insert: function() {
         db.transaction(function(tx){
             tx.executeSql("INSERT INTO...");});
     },
     select: function() {
         db.transaction(function(tx){
             tx.executeSql("SELECT FROM...");});
     }
 };
 return factoryfunctions;
});

我需要一直使用一个事务对象,或者根本不使用事务,这可能吗?

简单地说,就是这样。

var db = openDatabase("...");
tx = db.transaction();

var factoryfunctions = {
    insert: function() {
        tx.executeSql("INSERT INTO...");
    },
    select: function() {
        tx.executeSql("SELECT FROM...");
    }
};
return factoryfunctions;

我是javascript的新手,所以感谢您的帮助

1 个答案:

答案 0 :(得分:0)

缓存事务对象供以后使用是没有意义的。在事务回调完成后,它无法使用。在规范的术语中,它标记为陈旧,因此对其executeSql()的任何其他调用都会引发异常。

数据库对象transaction()readTransaction()changeVersion()上只有三种方法可用。没有办法避免交易对象。

但是,您可以执行的操作是在一次事务回调中多次调用executeSql()

请参阅此示例http://html5demos.com/database-rollback