2012-02-14 82 views
1

进出口创造了我的空气下面的函数内的sqlite的分贝Android应用:如何防止Air for android SQLite数据库被覆盖?

protected function createDatabase():void{ 

     _sqlConnection = new SQLConnection(); 
     _sqlConnection.addEventListener(SQLEvent.OPEN, openHandler); 
     _sqlConnection.addEventListener(SQLErrorEvent.ERROR, errorHandler); 

     var _sqlFolder:File = File.applicationStorageDirectory; 
     var _sqlFile:File = _sqlFolder.resolvePath("RouteLog.db");   

     _sqlConnection.open(_sqlFile); 
} 

我可以成功地创建表,插入和选择,但每一次我从闪存CS5.5的重新发布应用程序数据库被覆盖并且所有数据都丢失。完全难住,欢迎任何想法!

干杯

[编辑]

所以,我通过USB发布调试直接从Flash Pro中释放。当应用程序被初始化它调用上述方法,使用下面的SQL语句

var SQL:String =    
      "CREATE TABLE IF NOT EXISTS myRoutes (" + 
      "id INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      "name STRING, " + 
      "created DATE, " + 
      "duration NUMBER, " + 
      "waypoints OBJECT, " + 
      "avgSpeed NUMBER, " + 
      "distance NUMBER, " + 
      "rating NUMBER" + ")"; 

然后我可以运行一些操作,插入,选择等,并如预期的一切接受它创建一个表的OPEN事件。如果我退出并重新播放应用程序,则以前的数据集完好无损,但是当我从闪存重新发布时,以前版本中存储的任何数据都消失了。

根据文档SQLConnection.open()将打开在参数提供的文件的连接,如果它不存在,它会创建一个...

+0

更多的代码可能会给你一个答案,因为你甚至没有显示你如何访问/分配数据。 – 2012-02-15 00:41:11

+0

这并不重要。他说实际的文件被覆盖在应用程序的applicationStorageDirector中。 – Aaron 2012-02-15 02:46:04

回答

0

经过对adobe论坛的进一步研究,我认为答案是,您无法防止从Flash Pro重新发布时,存储在applicationStorageDirectory中的文件被覆盖。

应用程序构建使用地理定位作为核心功能,所以我需要一个真正的数据集来处理。最终解决方案为我工作,是将数据库从applicationStorageDirectory复制到documentsDirectory(sd卡),同时我仍在开发该应用程序(如果它已上市,将会删除该应用程序)。

0

根据闪光的AS3参考.filesystem.File:

当您卸载AIR应用程序时,卸载程序是否删除应用程序存储目录及其文件取决于平台。

因此,如果您手动卸载应用程序然后再次将其推送到设备,您可能会遇到该问题。有关这些步骤的更多详细信息将有所帮助,因为我肯定应用程序发布到Android设备之间的数据一直存在(尽管我使用的是Flash Builder)。