Adobe AIR Sqlite异步事务

时间:2014-04-29 08:19:19

标签: actionscript-3 sqlite air

这是我想要实现解决方案的问题,我有一些需要在数据库中写入的数据,数据来自网络,它可以“并行”到达,也是出于性能原因,代码使用异步连接。问题是我的实现中有一些错误,我想重写这个代码,所以它也使用事务和rolloback,处理所有可能的错误,代码应该干净,易于理解。
我无法找到示例代码来阅读以获得灵感或直接使用的东西,查看其他人所做的将会有很大帮助。 所以任何人都知道或有这样的示例代码? 我想我需要编写一些代码,这些代码可以让我链接这些方法:begin-> execute-> commit-> end transaction以及在出现错误时回滚

更新

我想要找到或实现的是

Update2所以当你想要插入一些东西时,你需要使用一个循环,然后使用execute方法async,然后当它成功插入下一个元素,依此类推它有点复杂,特别是如果我想抽象它,所有这部分代码都在一个地方而不是我的代码。

function executeAssyncAsTransaction(statement:SqlStatement,responder:Responder):void{
    //step 1 begin transaction
    //step 2 execute
    //step 3 commit
    //step 4 end transaction
    //step 5 handle errors and rollback
    //use responders above no event listeners
}

我想我知道如何实现这一点,但我知道我有可能做错了(我目前的实现是生产崩溃有时在某些机器上,所以我知道很难编写100%无错误的代码)< / p>

我也在考虑实现一个队列,如果需要的话,会存储我的语句(如果数据库很忙),所以我没有收到错误,必须稍后再试

1 个答案:

答案 0 :(得分:1)

在Adobe Air for JavaScript中使用事件侦听器,错误和回调函数,如下所示:

var conn = new air.SQLConnection(); 

conn.addEventListener(air.SQLEvent.OPEN, openHandler); 
conn.addEventListener(air.SQLErrorEvent.ERROR, errorHandler); 

// The database file is in the application storage directory 
var folder = air.File.applicationStorageDirectory; 
var dbFile = folder.resolvePath("DBSample.db"); 

conn.openAsync(dbFile); 

function openHandler(event) 
{ 
    air.trace("the database was created successfully"); 
} 

function errorHandler(event) 
{ 
    air.trace("Error message:", event.error.message); 
    air.trace("Details:", event.error.details); 
}

对于ActionScript,请阅读以下资源:

http://de.slideshare.net/peterelst/introduction-to-sqlite-in-adobe-air-1627545