0
答案是在这个线程:Sqlite issues with HTC Desire HD,感谢@Vikalp帕特尔打开SQLite数据库 - 没有这样的文件或目录
我这样做真的简单的事情 - 从SD卡打开SQLite数据库和阅读一些东西从它。例如表的列表:
这是我DataBaseHelper类(真的简单):
public class DataBaseHelper extends SQLiteOpenHelper{
static Context mContext;
private static SQLiteDatabase mDb;
public DataBaseHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
mContext = context;
}
//skip the overriden methods
public void OpenDataBase(String path, String name){
mDb = SQLiteDatabase.openDatabase(path + name, null, SQLiteDatabase.NO_LOCALIZED_COLLATORS);
}
public Cursor GetTables(){
return mDb.rawQuery("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name", null);
}
}
当我把这个代码
mDbPath = Environment.getExternalStorageDirectory() + "/test_db/";
mDbName = "db.sqlite";
mDbHelper = new DataBaseHelper(mContext,mDbPath+mDbName,null,1);
mDbHelper.OpenDataBase(mDbPath, mDbName);
Toast.makeText(mContext, String.format("Database %s%s successfully opened", new Object[]{mDbPath, mDbName}), Toast.LENGTH_LONG).show();
Cursor cursor = mDbHelper.GetTables();
返回游标包含表的列表。有用。这让我疯狂的唯一事情是在日志中的错误消息:
01-05 17:09:44.250: D/Database(21131): dbopen(): path = /mnt/sdcard/test_db/db.sqlite, flag = 2, file size = 3072
01-05 17:09:44.260: D/Database(21131): dbopen(): path = /mnt/sdcard/test_db/db.sqlite, mode: delete, disk free size: 3106 M, handle: 0x359260
01-05 17:09:44.260: I/Database(21131): sqlite returned: error code = 8, msg = statement aborts at 1: [pragma journal_mode = WAL;]
01-05 17:09:44.260: W/Database(21131): dbopen(): sqlite3_exec to set journal_mode to WAL for /mnt/sdcard/test_db/db.sqlite failed
01-05 17:09:44.260: E/Database(21131): dbopen(): errno = 2, error message = No such file or directory
错误的OpenDatabase方法发生。
有人可以帮我理解为什么会出现这个错误,我做错了什么。 谢谢。
编辑:我测试的是Android 2.3,HTC Desire HD的
变更后试'Environment.getExternalStorageDirectory()+ “/ TEST_DB /”''到Environment.getExternalStorageDirectory()。getAbsolutePath()+ “/ TEST_DB /”' –
并不能改变什么。路径是正确的,查询工作正常,但是这个错误仍然出现... – mihail
与你的问题相同。可能是值得一拍.http://stackoverflow.com/questions/4718934/sqlite-issues-with-htc-desire-hd –