【问题标题】:Blackberry - Cannot create SQLite database黑莓 - 无法创建 SQLite 数据库
【发布时间】:2011-06-14 21:39:41
【问题描述】:

我正在制作一个在后台运行的应用程序,并在设备启动时启动。 我已阅读文档,并从 RIM 获得 SQLiteDemo 文件,我正在使用它们尝试在模拟器中的 SD 卡上创建数据库。

不幸的是,我收到了这个错误: DatabasePathException:Invalid path name. Path does not contains a proper root list. See FileSystemRegistry class for details.

这是我的代码:

public static Database storeDB;
public static final String  DATABASE_NAME    = "testDB";
private String DATABASE_LOCATION = "file:///SDCard/Databases/MyDBFolder/";
public static URI dbURI;
dbURI = URI.create(DATABASE_LOCATION+DATABASE_NAME);
storeDB = DatabaseFactory.openOrCreate(dbURI);

出于本文的目的,我为URI.createDatabaseFactory.openOrCreate 提取了try/catch

那么,谁能告诉我为什么我不能在我的模拟器上创建数据库?

如果我加载它并进入媒体,我可以手动创建一个文件夹。 SD 卡指向我硬盘上的一个文件夹,如果我在其中创建一个文件夹,它也会显示在模拟器上,所以我可以创建文件夹,而不是通过编程方式。

另外,我已经从开发者文档中尝试过:

// Determine if an SDCard is present 
boolean sdCardPresent = false;
String root = null;
Enumeration enum = FileSystemRegistry.listRoots();
while (enum.hasMoreElements())
{
    root = (String)enum.nextElement();
    System.err.println("root="+root);
    if(root.equalsIgnoreCase("sdcard/"))
    {
        sdCardPresent = true;
    }     
}

但它只接收store/ 而从不接收sdcard/。 任何人都可以帮忙吗? 谢谢。

【问题讨论】:

  • 碰巧在模拟器中运行我的程序时找不到SD卡,但是如果你在不关闭模拟器的情况下再次运行它,它会找到它并运行正常。跨度>

标签: sqlite blackberry


【解决方案1】:

仅供参考, 我想我解决了这个问题。

问题是我在启动期间尝试写入存储,但存储还没有准备好。一旦加载了设备/模拟器,并触发了我的一些侦听器,就创建了数据库。

请看这里: http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800332/832062/How_To_-_Write_safe_initialization_code.html?nodeid=1487426&vernum=0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    相关资源
    最近更新 更多