我正在尝试从我的SD卡加载数据库文件,但是给出了异常。 以下是例外
org.sqlite.database.sqlite.SQLiteException: not an error (code 0): Could not open the database in read/write mode.
这是我的代码:
public void csr_test_1() throws Exception
{
DB_PATH=new File("/storage/sdcard1/sk2.db");
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DB_PATH, null);
String res = "";
Cursor c = db.rawQuery("SELECT synsetid, w2.lemma FROM sense LEFT JOIN word AS w2 ON w2.wordid=sense.wordid WHERE sense.synsetid IN (SELECT sense.synsetid FROM word AS w1 LEFT JOIN sense ON w1.wordid=sense.wordid WHERE w1.lemma='"+ "life" + "') AND w2.lemma<>'" + "life" + "'", null);
if( c!=null ){
boolean bRes;
for(bRes=c.moveToFirst(); bRes; bRes=c.moveToNext()){
String x = c.getString(0);
res = res + "." + x;
}
}else{
}
test_result("csr_test_1.1", res, ".one.two.three");
db.close();
test_result("csr_test_1.2", db_is_encrypted(), "unencrypted");
}
这些是我正在使用的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="com.android.vending.BILLING" />
![enter image description here][1]
![enter image description here][2]
请帮帮我......谢谢
答案 0 :(得分:3)
如果sqlite3_db_readonly()
returns non-zero,则抛出此异常。如果
数据库文件是只读的,或
数据库文件不存在。
你有一个硬编码路径"/storage/sdcard1/sk2.db"
- 那里可能没有数据库。使用Environment
中的变量来访问外部存储而不是硬编码路径。
答案 1 :(得分:0)
将此权限添加到AndroidManifest.xml
。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 2 :(得分:0)
请使用清单文件中的两个权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 3 :(得分:0)
如果您包含以下内容后仍然出现此错误:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
并且您还实现了运行时权限,然后它几乎肯定是与Android管理外部SD卡文件的方式相关的问题。有关更多信息,请在此处查看我的答案:
答案 4 :(得分:0)
如果您的sdk> N,则必须请求这样的读写权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE},
1);