BlackBerry SQLite数据库创建:“filesystem not ready”

时间:2010-12-15 07:10:34

标签: blackberry blackberry-simulator

我的应用程序从服务器获取数据并将其保存到SQLite数据库。这在9550(BlackBerry Storm 2)模拟器中工作正常,但是当我在任何其他模拟器中运行它时,它会给我这个错误:

  

文件系统未就绪

代码段:

URI myURI = URI.create("file:///store/MyDataBase.db");   

为什么会这样?

2 个答案:

答案 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()来获取当前挂载的文件系统的枚举。