SQLiteDiskIOException на устройстве, но не на ПК - затмение - PullRequest
1 голос
/ 06 июля 2011

Здравствуйте, разработчики Android,

Я изо всех сил пытался получить эту работу, но не смог, и теперь хочу получить ваш совет для этой ошибки. В чем проблема, я использую метод «update» из библиотеки «SQLiteDabase», и он НЕ ТОЛЬКО работает на реальном устройстве.

Странно то, что у него нет проблем с эмулятором eclipse android, но только на реальных устройствах. Если кто-нибудь знает, как это выяснить или у вас есть совет, не могли бы вы мне помочь? Я очень ценю вашу помощь в этом вопросе. Ниже приведены коды моих методов и сообщений об ошибках.


public void updateDBMessages(int column_no, String key, Object value){
        SQLiteDatabase db = getWritableDatabase();
        ContentValues table_value = new ContentValues();

        if(value.getClass().equals(String.class)){
            table_value.put(key, value.toString());
        }
        else if (value.getClass().equals(Integer.class)){
            table_value.put(key, (Integer)value);
        }

        // THE ERROR HAPPENS ON THIS COMMAND!!
        db.update(VM_TABLE_NAME, table_value, "_id="+column_no, null);      
    }

[Сообщение об ошибке LOG]

07-05 08:10:39.721: ERROR/AndroidRuntime(10295): FATAL EXCEPTION: main
07-05 08:10:39.721: ERROR/AndroidRuntime(10295): android.database.sqlite.SQLiteDiskIOException: error code 10: disk I/O error
07-05 08:10:39.721: ERROR/AndroidRuntime(10295):     at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
07-05 08:10:39.721: ERROR/AndroidRuntime(10295):     at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
07-05 08:10:39.721: ERROR/AndroidRuntime(10295):     at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1727)
07-05 08:10:39.721: ERROR/AndroidRuntime(10295):     at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1656)
07-05 08:10:39.721: ERROR/AndroidRuntime(10295):     at ca.slipline.android.asterdroid.VoiceMailScreen.updateDBMessages(VoiceMailScreen.java:607)
07-05 08:10:39.721: ERROR/AndroidRuntime(10295):     at ca.slipline.android.asterdroid.VoiceMailScreen.access$9(VoiceMailScreen.java:594)
07-05 08:10:39.721: ERROR/AndroidRuntime(10295):     at ca.slipline.android.asterdroid.VoiceMailScreen$3.onClick(VoiceMailScreen.java:482)
07-05 08:10:39.721: ERROR/AndroidRuntime(10295):     at android.view.View.performClick(View.java:2501)

Ответы [ 2 ]

0 голосов
/ 14 июля 2011

Я нашел решение. Это была своего рода проблема самой Android, поэтому я просто изменил метод «update» на «execSQL», чтобы обновить его вручную с помощью команды SQL «UPDATE».

0 голосов
/ 06 июля 2011

Похоже, вы пытаетесь обновить запись с конфликтом . Вы должны либо пересмотреть свой оператор update (проверьте, где предложение или типы полей и т. Д.), Либо просто использовать updateWithOnConflict

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...