4

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

文件系统未准备好

代码片段:

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

为什么会这样?

4

2 回答 2

23

理查德是对的。您需要检查文件系统根“存储”是否存在。不过,使用 SQLite 有一个额外的问题。RIM仅支持eMMC存储上的 SQLite。所以即使“store”存在,也只有底层存储是eMMC才有效。值得注意的是BlackBerry Bold 9650设备 AKA Bold2 具有“存储”,但它不是 eMMC,因此您不能在其中放置 SQLite 数据库。

我不知道有任何直接方法可以找出文件系统是否正在使用 eMMC。我问了 RIM,并被告知要检查文件系统的大小。如果超过 1 GB,则为 eMMC。这对我来说不是一个非常令人满意的答案。我最终检查了文件系统“系统”。它是一个只读文件系统,但它只存在于 eMMC 存储中,如果存在,您可以将数据库写入“存储”文件系统根目录。

通过SQLite 开发者指南概述

您可以使用net.rim.device.api.database包中提供的 SQLite API 将应用程序数据持久存储到 eMMC 内存或 microSD 卡。

于 2010-12-15T15:56:36.123 回答
5

可能是 store 不是 9550 上已安装且可用的文件系统根目录。您应该使用 javax.microedition.io.file.FileSystemRegistry.listRoots() 来获取当前已安装文件系统的枚举。

于 2010-12-15T13:13:52.833 回答