朋友。
我尝试在我的Android应用中使用预先创建的自定义数据库。首先,我使用此代码复制我的数据库。
public void onCreate(SQLiteDatabase db) {
final String DB_DESTINATION = "/data/data/com.example.android.sqlitedatabaseexample/databases/turkish2.db";
boolean initialiseDatabase = (new File(DB_DESTINATION)).exists();
if (initialiseDatabase == false) {
// Open the .db file in your assets directory
InputStream is = null;
try {
is = context.getAssets().open("turkish2.db");
// Copy the database into the destination
OutputStream os = new FileOutputStream(DB_DESTINATION);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0){
os.write(buffer, 0, length);
}
os.flush();
os.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
然后我检查数据库是否存在调用此方法
public boolean checkDataBase() {
/*Toast.makeText(getApplicationContext(),
"работаю", Toast.LENGTH_SHORT).show();*/
SQLiteDatabase checkDB = null;
try {
checkDB = SQLiteDatabase.openDatabase("/data/data/com.example.android.sqlitedatabaseexapple/databases/turkish2.db", null,
SQLiteDatabase.NO_LOCALIZED_COLLATORS/*OPEN_READONLY*/);
Toast.makeText(getApplicationContext(),
"БД на месте", Toast.LENGTH_SHORT).show();
checkDB.close();
} catch (SQLiteException e) {
// database doesn't exist yet.
Toast.makeText(getApplicationContext(),
"БД не существует", Toast.LENGTH_SHORT).show();
}
return checkDB != null;
}
...它表明我的数据库存在!然后我尝试进行查询但获得异常。
我的数据库包含两个表 - android_metadata和turkish。但。 我用这个
检查所有表格Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
if (c.moveToFirst()) {
while ( !c.isAfterLast() ) {
Toast.makeText(this, "Table Name=> "+c.getString(0), Toast.LENGTH_LONG).show();
c.moveToNext();
}
Toast.makeText(this, "DATS ALL SUKA", Toast.LENGTH_LONG).show();
}
它showl就像我只有android_metadata表。另外,当我尝试查询我需要的表(土耳其语表)时,它显示SQLiteException:没有这样的表' turkish'
我做错了什么?请帮助。
提前致谢!