无法在打包空中写入sqlite db

时间:2012-01-18 17:57:49

标签: flex sqlite air

我可以在IDE(FB)中运行时写入db,而打包后,应用程序不会写入sqlite db,为什么?提前致谢。

2 个答案:

答案 0 :(得分:0)

可能的原因是您安装的Air应用程序无法解析sqlite文件的路径。

我通常做的是使用File类的一个静态公共属性来解析我的sqlite文件,例如。

databaseConnection = new SQLConnection();
databaseConnection.addEventListener(SQLEvent.OPEN, onOpen);
databaseConnection.addEventListener(SQLErrorEvent.ERROR, onError);               
databaseConnection.openAsync(File.applicationDirectory.resolvePath('mydb.sqlite'));

这里的关键位是 File.applicationDirectory.resolvePath('mydb.sqlite')行,在这个例子中,AIR将在应用程序所在的目录中查找名为mydb.sqlite的文件。安装到 - 在您的开发环境中,这将与bin-debug文件夹(或您正在编译的任何文件夹)相同。

希望有帮助,如果没有,如果你可以发布你正在使用的代码,你会得到什么错误,我会尽力帮助你。

答案 1 :(得分:0)

最可能的原因是您的数据库文件位于应用程序目录中,该目录是只读的。

来自Flex 3.5语言参考:

  

File.applicationDirectory - 安装应用程序的只读目录(以及任何已安装的资产)

如果是这种情况,只需使用File.applicationStorageDirectory即可,但不仅仅是简单的修复。

希望这有帮助。

<磷>氮