【问题标题】:SQlite unable to openSQlite 无法打开
【发布时间】:2011-12-01 06:18:15
【问题描述】:

我使用 sqliteadmin(版本 0.8.3.2)创建我的数据库,我将此文件放入我的资产目录,然后将此文件复制到 data/data/mypackage/databases/mydb,它可以。现在当我尝试打开此文件时,出现异常为 android.database.sqlite.SQLiteException: unable to open database file,下面是我用来打开 mydb 的代码。

private static final String DB_PATH = "/data/data/src.com/databases/";
private static final String DB_NAME = "mydb";
String mypath = DB_PATH + DB_NAME;

try{ 
dbBF = SQLiteDatabase.openDatabase(mypath, null, SQLiteDatabase.OPEN_READWRITE);

}catch(Exception ex)

{System.out.print("H![enter image description here][1]ere is an Exception"+ex);
}    
Cursor cur = dbBF.rawQuery("SELECT * FROM"+"myTable" , null);

【问题讨论】:

  • 向我们展示代码如何打开数据库?
  • 我编辑了我上面的帖子以添加打开 SQLite 的方法...
  • 文件需要.db扩展名?
  • 没有文件不需要.db扩展名

标签: android


【解决方案1】:

您的方法似乎是正确的。你的数据库文件有扩展名吗?喜欢mydb.db。如果你这样做了,你应该添加文件的完整名称。

【讨论】:

  • thansk,我的 SQLite 文件没有任何扩展名,当我从资产目录复制到数据目录时,我也没有放任何扩展名..
  • 复制到那个目录了吗?在您的File Explorer 中检查它在您的DDMS perspective
  • 我拔掉我的设备,我在 DDMS 视图中运行我的模拟器,我运行我的代码,我看到我的数据库文件存在于 data/data/package/databases/mydb 目录中......
【解决方案2】:

我遇到了同样的问题。首先请注意,你的数据库文件不能大于 1.2MB,如果是,请尝试拆分它。其次,而不是以下几行,

DBAdapter db = new DBAdapter(this);
db.openDataBase(); //Bad! db not created yet!

尝试使用

DBAdapter db = new DBAdapter(this);
db.createDataBase(); //needs exception handling
db.openDataBase();

我从How does android access a sqlite database included in the assets folder 复制了它。无论如何,它对我有用。如果有任何问题,请告诉我。

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 1970-01-01
    • 2016-01-21
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多