我无法在AIR应用程序中写入SQLite数据库

时间:2011-12-12 16:42:55

标签: sqlite actionscript air

我使用FlashDevelop以调试模式发布AIR应用程序,并在要发布的文件/文件夹中包含一个数据库。 当应用程序首次启动时,它会检查applicationStorageDirectory中是否存在此db的实例,如果没有,则将包含的实例从applicationDirectory复制到applicationStorageDirectory。 这应该意味着引用的数据库dbFile = File.applicationStorageDirectory.resolvePath(DB_FILE_NAME);现在应该是可写的,但是当我运行应用程序时,我可以从表中读取记录,但是当我尝试使用SQL语句编写时,我得到一个SQLError:'错误#3122 :尝试编写只读数据库'。

我知道如果我试图写入applicationDirectory的只读位置但是我当然正在使用File.applicationStorageDirectory位置(据我所知)应该是可写的,这会被抛出。

db 7在我的Windows 7上的位置,64位= C:\ Users \ sean.duffy \ AppData \ Roaming \ FishFightAppData \ Local Store \ db这是使用dbFile.nativePath属性找到的,所以我再次肯定我应该能够更新数据库。

有人有任何想法吗?我已经尝试了所有我能想到的和搜索过的东西,但唯一的常见原因似乎是人们试图写入asplicationDirectory而不是存储目录....

UPDATE ::

我的坏 - 刚刚意识到我误读了我正在使用的第三方库的API!我本来应该调用executeModify(statement),它可以修改db的内容,而不是我调用execute / statement,它不会/不能覆盖db。

源代码被编译成swc并且没有文档指出你需要使用executeModify,虽然我应该从我想的名字中猜到!

很抱歉,感谢您的帮助

1 个答案:

答案 0 :(得分:1)

(作为一个公众的礼貌,我要把这个从未答复的清单中删除,我正在重新提出明显的解决方案。像往常一样,提问者非常欢迎忽略我的并自己发布并接受他们自己的答案。)

在此API中,您需要致电executeModify(statement),而不是execute(statement)。后者不会覆盖数据库。