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