-2
我从谷歌播放得到一个错误。我想停止用户的崩溃,并向他显示消息或祝酒。应用程序必须继续前进,如果发生这种情况应用程序应该跳过这个或什么。只有一些设备得到这个错误。如何阻止这个sql io崩溃并通知用户?
android.database.sqlite.SQLiteDiskIOException: disk I/O error
at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:2075)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1014)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:962)
at offline.sinhaladic.com.MainActivity.searcc(MainActivity.java:1366)
at offline.sinhaladic.com.MainActivity$7.afterTextChanged(MainActivity.java:972)
at android.widget.TextView.sendAfterTextChanged(TextView.java:7678)
at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:8080)
这是我的searcc功能MainActivity.java
:1366
public void searcc()
{
String myPath=Environment.getDataDirectory()+"/data/"+getPackageName()+"/"+"databases/cz";
EditText et=(EditText) findViewById(R.id.editText1);
SQLiteDatabase cn = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
String cnql = "SELECT DISTINCT english FROM jgd INDEXED BY eng WHERE english LIKE '"+et.getText().toString()+"%' LIMIT 0,30";
Cursor cg=cn.rawQuery(cnql, null);
if(cg.moveToFirst())
{
do {
sugenstrArr.add(cg.getString(0));
} while (cg.moveToNext());
}
cg.close();
cn.close();
}
SQLiteDiskIOException与多个访问同时与数据库相关,一个线程尝试获取数据,而另一个尝试同时插入数据。引用从http://stackoverflow.com/questions/13975513/android-sqlitediskioexception-in-getreadabledatabase-native-setlocale-sqlite – 2014-11-08 06:48:49
不,在代码中没有插入。只是访问只读。你能告诉我如何尝试赶上这个或当得到这个错误停止崩溃? – skk 2014-11-08 06:50:41
请通过@almas shaikh查看下面的答案 – 2014-11-08 06:51:27