Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BlackBerry SQLite数据库创建:";“文件系统未就绪”;_Blackberry_Blackberry Simulator - Fatal编程技术网

BlackBerry SQLite数据库创建:";“文件系统未就绪”;

BlackBerry SQLite数据库创建:";“文件系统未就绪”;,blackberry,blackberry-simulator,Blackberry,Blackberry Simulator,我的应用程序从服务器获取数据并将其保存到SQLite数据库。这在9550()模拟器中可以正常工作,但当我在任何其他模拟器中运行它时,会出现以下错误: 文件系统未就绪 代码段: URI myURI = URI.create("file:///store/MyDataBase.db"); 为什么会发生这种情况?可能是存储不是9550上已装载且可用的文件系统根目录。您应该使用javax.microedition.io.file.FileSystemRegistry.listRoots()来获取

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

文件系统未就绪

代码段:

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

为什么会发生这种情况?

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

Richard是正确的。您需要检查文件系统根“store”是否存在。不过,使用SQLite还有一个额外的缺点。仅支持存储上的SQLite。因此,即使存在“存储”,它也只有在底层存储是eMMC的情况下才能工作。值得注意的是,设备AKA Bold2有“store”,但它不是eMMC,所以不能在那里放置SQLite数据库

我不知道有任何直接的方法可以确定文件系统是否正在使用eMMC。我问RIM,他们让我检查文件系统的大小。如果超过1GB,则为eMMC。这对我来说不是一个很令人满意的答案。我最后检查了文件系统“系统”。它是一个只读文件系统,但它仅用于eMMC存储,如果它存在,您可以将数据库写入“存储”文件系统根

通过:

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


打开一个指向该URI的文件连接,看看canWrite()是否返回true。Michael,我得说你在这方面比我做得更深入。当我发现自己无法向/store写入数据时,我感到非常惊讶,即使它存在——而且只在某些设备上。这意味着在某些设备上,SQLite数据库仅在没有SD卡的情况下可用。有趣。Michael…但Sqlite仅用于运行BlackBerry®设备软件5.0或更高版本的BlackBerry设备,包括Sqlite库。5.0以下的设备软件呢。我们不能为他们使用sqlite吗??如果我们不能比什么是alternete???@nimi更好地处理这个问题,在搜索任何可能类似的现有问题之后,在StackOverflow上创建一个新问题。Michael-很好的解释和研究。谢谢。我试过了,我发现商店在每个模拟器中都有可用的文件系统。为什么这个文件系统没有准备好出错呢??