Android SQLiteDatabase.openDatabase返回路径而不是数据库本身

时间:2015-02-25 16:51:42

标签: android sqlite

我试图打开从意图传递的数据库, 当我尝试打开数据库时,它将返回数据库路径而不是数据库自身,因此当我尝试执行SQLite命令时,它将无法工作

URI uri = (Uri) getIntent().getExtras().get(Intent.EXTRA_STREAM);
SQLiteDatabase oldDB = SQLiteDatabase.openDatabase(uri.getPath(), null, 1);
database.selectTable(oldDB)

//select table from old DB
selectTable(SQLiteDatabase oldDB){
       database.execSQL("SELECT * FROM " +
                       oldDB +
                       ".table1"
}

会导致错误: SELECT * FROM SQLiteDatabase:/mnt/sdcard/path/to/database.db.table1 我需要获取实际的数据库" SELECT * FROM nameOfDatabase.table1"

2 个答案:

答案 0 :(得分:1)

  

当我尝试打开数据库时,它将返回数据库路径而不是数据库自我

不,它没有。 toString()上的SQLiteDatabase会返回路径。您在查询中toString()上连接了SQLiteDatabase,原因不明。如果您要对oldDB执行查询,请致电query()上的rawQuery()oldDB,而不是database

答案 1 :(得分:1)

您使用openDatabase打开的数据库的名称始终为main

只有在实际将数据库附加到另一个数据库时,即在数据库上执行ATTACH statement时,才能获得不同的数据库名称。