Actionscript 3 如何管理大型Flex应用程序中的许多openAsync()调用?

Actionscript 3 如何管理大型Flex应用程序中的许多openAsync()调用?,actionscript-3,apache-flex,sqlite,Actionscript 3,Apache Flex,Sqlite,我在应用程序中多次使用openAsync()函数成功地打开了SQLite连接。但最近我添加了更多同样使用openAsync()的代码,现在我得到了以下错误: Error: Error #3110: Operation cannot be performed while SQLStatement.executing is true. at Error$/throwError() at flash.data::SQLStatement/checkReady() at flash.data::SQLS

我在应用程序中多次使用openAsync()函数成功地打开了SQLite连接。但最近我添加了更多同样使用openAsync()的代码,现在我得到了以下错误:

Error: Error #3110: Operation cannot be performed while SQLStatement.executing is true.
at Error$/throwError()
at flash.data::SQLStatement/checkReady()
at flash.data::SQLStatement/execute()
at Function/com.lang.SQL:SQLErrorStack/deleteAllRecordsFromErrorStackTable/com.lang.SQL:connOpenHandler()[C:\work\Lang\trunk\actionscript\src\com\lang\SQL\SQLErrorStack.as:466]
看起来上一个代码在另一个代码启动时没有完成执行。 我的问题是:为什么第二个连接中的代码执行被拒绝?我期望使用某种队列机制,但事实并非如此。我到处寻找解决这个问题的办法,但失败了。你能帮忙吗

一个打开的DB连接可以解决这个问题吗?那么我应该对我的代码进行哪些更改

这是与此类似的代码,在我的应用程序中出现过几次

var SQLquery:String;
SQLquery = "DELETE FROM ErrorStackTable";
        var sqlConn:SQLConnection = new SQLConnection();
        sqlConn.addEventListener(SQLEvent.OPEN, connOpenHandler);

        var dbFile:File = new File();
        dbFile.nativePath = FlexGlobals.topLevelApplication.databaseFullPath_conf+"\\"+FlexGlobals.topLevelApplication.databaseName_conf;

        sqlConn.openAsync(dbFile); // openDB
        sqlSelect = new SQLStatement();
        sqlSelect.sqlConnection = sqlConn;
        sqlSelect.text = SQLquery;

        function connOpenHandler(event:SQLEvent):void
        {
            sqlSelect.addEventListener(SQLEvent.RESULT, resultSQLHandler);
            sqlSelect.addEventListener(SQLErrorEvent.ERROR, errorHandler);
            sqlSelect.execute();
        }

在大型Flex应用程序中,由于SQL代码的可重用性,请尝试避免openAsync(db)调用,如果要执行许多SQL语句,则应定义越来越多的SQL语句。如果您从web服务(RPC)获取动态结果[Array],那么您肯定会得到一个错误,尽管它执行成功,并且在数据库中插入数组将失败。。看看 链接你会得到你的答案

我刚刚更改了conn.openAsync(db)
连接打开(db)成功了


谢谢

您无法保持连接?在几乎所有的数据库平台中,确保连接的安全是一个时间密集型的过程。我可以接受这种时间密集型的过程作为一个解决方案,只要它起作用。如果您查看代码,您会注意到我必须重新构造代码。真的值得吗?我没有太多的数据库连接,但它们是连续的。在结果或错误处理程序启动后,是否调用以执行下一个查询?没有,因为我希望SQLite数据库中存在某种队列。更重要的是,我希望这种将查询放入由我管理的队列的方式很难实现。或者我错了。我发现了这一点:它有用吗?请注意,如果要保存大量数据,openAsync()可以解决冻结应用程序的问题。更常见的是,这样的错误会发生:操作仍在执行。所以我认为这可能是个问题,或者我错了。我从我的经验中知道这一点。令人惊讶的是,这个问题没有解决办法。我到处寻找如何组织大型应用程序的SQLite代码。我真的很失望。