你好我有工厂提供与数据库一起工作的功能,它看起来像这样:
.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的新手,所以感谢您的帮助
答案 0 :(得分:0)
缓存事务对象供以后使用是没有意义的。在事务回调完成后,它无法使用。在规范的术语中,它标记为陈旧,因此对其executeSql()
的任何其他调用都会引发异常。
数据库对象,transaction()
,readTransaction()
和changeVersion()
上只有三种方法可用。没有办法避免交易对象。
但是,您可以执行的操作是在一次事务回调中多次调用executeSql()
。