0 Replies Latest reply on Oct 18, 2012 7:01 AM by UbuntuPenguin

    Adobe Air SQLite Concurrency/Best Practices

    UbuntuPenguin Level 4

      Hello Everyone,

        I posted this on Stackoverflow, but I was wondering if there were any I guess design patterns or hints concerning the usage of a SQLite DB.  I'm asking this mostly because with the Adobe Air sqlite implementation, you can't modify the timeout, so you have to re-architect your application to try and retry your sql statements.

       

      I am attempting to use a SQLite DB with an AIR project and there seem to be a few questions that I just can't seem to find the answers to on the internet, especially ones concerning best practices.

      1. The first is about having multiple connections in the same application instance.  Some application processes require the use of a db for a split second, and would better be served by a synchronous type code flow (try{}catch(){}).  Some processes may take awhile and would be better served by an asynchronous code flow with an AsyncResponder. 

        Because of this, I have thought about having a ConnectionPoolManager which would have multiple instances of async and one instance of my sync SQLConnection classes.  Is this a decent, good or absolutely atrocious idea ?  This leads me to my next point.

      2. Is there any issue of having multiple async connections running their async statements in parallel ?  I've seen some people complain about the db being locked, and I've read that only one statement can perform a write at a time.  

        What happens if a write statement gets called to execute(new Async...) while another one is busy ?  Will an error be thrown, or will it wait for a timeout ?

      Any clarification about this issue would be greatly appreciated.  I keep running into sources that kind of answer one-off questions but not my question in particular.  Usually I would go test it myself, but I'm worried I may not be able to reproduce the pitfall error that will only manifest itself at heavier usage levels.