3

データベースフォルダを削除するために使用するコードをいくつか作成しました。データベースを削除しますが、エラーもスローします。この問題を解決する方法を教えてください。

データベースを削除するためのコード

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");
                        }

エラー:

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)
4

3 に答える 3

7

SQLite ファイルを削除するに、カーソルとデータベースを閉じる必要があります。

于 2012-12-17T07:42:27.263 に答える
0
于 2014-01-04T10:20:41.200 に答える
0

データベースの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));
        }
    }
于 2016-05-26T04:37:07.540 に答える