Reputation: 2311
I have written some code which is used to delete database folder. It delete database but also throw error. Please suggest me how to solve this problem.
Code for delete database
public void deleteDB() {
try {
File db_path = new File(
"/data/data/pacakge_name/databases/mydatabase_db.db");
db_path.delete();
System.out
.println("Database deleted successfully================================");
} catch (Exception e) {
// TODO: handle exception
Log.e("Error==", e.toString());
}
}
Cursor cursor = handler.getCategoryData("1");
if (cursor.moveToFirst()) {
System.out
.println("database has data................................");
} else {
System.out
.println("database has no data.............................");
LiveTVCategoryParser category_parser = new LiveTVCategoryParser();
category_parser.category_parser(Splash.this, "1",
"live_root");
}
Error:
android.database.sqlite.SQLiteDiskIOException: disk I/O error (code 1802)
E/AndroidRuntime( 613): at android.database.sqlite.SQLiteConnection.nativeExecuteForCursorWindow(Native Method)
E/AndroidRuntime( 613): at android.database.sqlite.SQLiteConnection.executeForCursorWindow(SQLiteConnection.java:838)
E/AndroidRuntime( 613): at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:836)
E/AndroidRuntime( 613): at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
E/AndroidRuntime( 613): at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:143)
E/AndroidRuntime( 613): at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133)
E/AndroidRuntime( 613): at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:196)
E/AndroidRuntime( 613): at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:236)
E/AndroidRuntime( 613): at com.zengamedia.ui.Splash$1.run(Splash.java:51)
E/AndroidRuntime( 613): at java.util.Timer$TimerImpl.run(Timer.java:284)
Upvotes: 3
Views: 17411
Reputation: 1
call this function when database‘s CRUD
public synchronized void checkDBIsOpen() {
try {
mydb = dbHelper.getWritableDatabase();
} catch (Exception e) {
e.printStackTrace();
NewsLog.error(TAG, "check database is open or not,excetpion:" + Utility2_1.getErrorInfo(e));
}
}
Upvotes: 0
Reputation: 1496
The error code 1802 is SQLITE_IOERR_FSTAT. I'd rather assume something is wrong on the disk level, try to delete the database and check the disk medium.
Upvotes: 0
Reputation: 86948
You should close your Cursors and database before deleting the SQLite file.
Upvotes: 7