我的应用程序从服务器获取数据并将其保存到 SQLite 数据库。这在 9550 ( BlackBerry Storm 2 ) 模拟器中运行良好,但是当我在任何其他模拟器中运行它时,它给了我这个错误:
文件系统未准备好
代码片段:
URI myURI = URI.create("file:///store/MyDataBase.db");
为什么会这样?
我的应用程序从服务器获取数据并将其保存到 SQLite 数据库。这在 9550 ( BlackBerry Storm 2 ) 模拟器中运行良好,但是当我在任何其他模拟器中运行它时,它给了我这个错误:
文件系统未准备好
代码片段:
URI myURI = URI.create("file:///store/MyDataBase.db");
为什么会这样?
理查德是对的。您需要检查文件系统根“存储”是否存在。不过,使用 SQLite 有一个额外的问题。RIM仅支持eMMC存储上的 SQLite。所以即使“store”存在,也只有底层存储是eMMC才有效。值得注意的是BlackBerry Bold 9650设备 AKA Bold2 具有“存储”,但它不是 eMMC,因此您不能在其中放置 SQLite 数据库。
我不知道有任何直接方法可以找出文件系统是否正在使用 eMMC。我问了 RIM,并被告知要检查文件系统的大小。如果超过 1 GB,则为 eMMC。这对我来说不是一个非常令人满意的答案。我最终检查了文件系统“系统”。它是一个只读文件系统,但它只存在于 eMMC 存储中,如果存在,您可以将数据库写入“存储”文件系统根目录。
您可以使用
net.rim.device.api.database
包中提供的 SQLite API 将应用程序数据持久存储到 eMMC 内存或 microSD 卡。
可能是 store 不是 9550 上已安装且可用的文件系统根目录。您应该使用 javax.microedition.io.file.FileSystemRegistry.listRoots() 来获取当前已安装文件系统的枚举。