2016-03-18 17 views
0

Ich arbeite an einer App, die SQLite-Datenbank zum Speichern von Benutzerdaten verwendet. Beim Versuch, eine schreibbare Datenbank zu erhalten, erhalte ich einen Fehler in logcat. enter image description hereSo lösen Sie Android SQL-Fehlercode 2

ich für Problem gesucht und diese Links gefunden:

E/SQLiteLog﹕ (10) Failed to do file read, got: 0, amt: 100, last Errno: 2

http://www.geekub.com/4367/0-amt-100-last-errno-2-e-sqlitelog-10-failed-to-do-file-read

aber keine Lösung gefunden. Es gibt kein Problem in Bezug auf die Berechtigung oder den Kontext. Die Ausführung der Abfrage sieht jedoch erfolgreich aus. Die Zeile direkt unter sqlite log wird von der Klasse sqliteOpenHelper beim erfolgreichen Erstellen der Tabelle gedruckt.

Wie kann ich das lösen?

package classmanagement.management.college.com.classmanagementapp.model; 

import android.content.Context; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 
import android.widget.Toast; 

/** 
* Created by RaazDk on 12/20/2015. 
*/ 
public class InAppCacheManager extends SQLiteOpenHelper { 


    private static final String DATABASE_NAME = "class_management_db"; 
    private static final int DB_VERSION = 1; 
    private static final String SPACE = " "; 
    private static final String COMMA = ","; 



    /** 
    * Routine table and fields 
    */ 
    private static final String TABLE_ROUTINE ="Tbl_routine"; 
    private static final String COL_SUBJECT_NAME = "col_sub"; 
    private static final String COL_TEACHER_NAME= "col_teacher"; 
    private static final String COL_START_TIME = "col_start_time"; 
    private static final String COL_END_TIME = "col_end_time"; 
    private static final String COL_DAY_INDEX ="col_day_index"; 
    /** 
    * Comments table and fields 
    */ 
    private static final String TABLE_COMMNETS = "Tbl_comments"; 
    private static final String COL_COMMENTS= "col_commnets"; 
    private static final String COL_COMMENTOR_REF ="col_commentor"; 

    /** 
    * 
    * Friend table and fields 
    */ 
    private static final String TABLE_FRIENDS = "Tbl_Friends"; 
    private static final String COL_FRIEND_NAME = "col_friend_name"; 
    private static final String COL_FRIEND_ID = "col_id"; 
    private static final String COL_GROUP_NAME = "col_grp_name"; 
    private static final String COL_CLASS_NAME = "col_class_name"; 
    private static final String COL_SEMESTER_NAME = "col_semester_name"; 
    private static final String COL_E_MAIL = "col_friend_email"; 

    /** 
    * 
    * College Event table and fields 
    * 
    * @param context 
    */ 

    private static final String TABLE_EVENTS = "tbl_events"; 
    private static final String COL_EVENT_ID = "col_event_id"; 
    private static final String COL_EVENT_TITLE = "col_event_title"; 

    /** 
    * Record Version table and Fields 
    */ 

    private static final String TABLE_RECORD_VERSION = "tbl_rec_version"; 
    private static final String COL_LAST_FRIEND_ID = "col_last_friend_id"; 
    private static final String COL_LAST_EVENT_ID ="col_last_event_id"; 
    private static final String COL_LAST_ROUTINE_ID = "col_last_routine_version"; 
    private static final String COL_LAST_HOLIDAY_ID = "col_last_holiday_version"; 


    /** 
    * 
    *Holiday table and Fields 
    */ 

    private static final String TABLE_HOLIDAY = "tbl_holiday"; 
    private static final String COL_HOLIDAY_TITLE = "col_holiday_title"; 
    private static final String COL_HOLIDAY_DESC = "col_holiday_desc"; 
    private static final String COL_HOLIDAY_START = "col_holiday_start"; 
    private static final String COL_HOLIDAY_END = "col_holiday_end"; 


    /** 
    * Queries to create tables. 
    */ 

    private static final String CREATE_FRIENDS_TABLE_QUERY="CREATE TABLE IF NOT EXISTS"+SPACE+TABLE_FRIENDS 
      +"("+COL_FRIEND_ID+SPACE+"INT NOT NULL PRIMARY KEY"+COMMA 
       +COL_FRIEND_NAME+SPACE+"VARCHAR(300)"+COMMA+COL_E_MAIL+SPACE+"VARCHAR(100)"+COMMA+COL_CLASS_NAME+SPACE+"VARCHAR(50)"+COMMA 
       +COL_SEMESTER_NAME+SPACE+"VARCHAR(50)"+COMMA+COL_GROUP_NAME+SPACE+"VARCHAR(50)" 
      +")"; 

    private static final String CREATE_EVENTS_TABLE_QUERY="CREATE TABLE IF NOT EXISTS"+SPACE+TABLE_EVENTS 
      +"("+COL_EVENT_ID+SPACE+"INT NOT NULL PRIMARY KEY"+COMMA+COL_EVENT_TITLE+SPACE+"VARCHAR(200)" 

      +")"; 
    private static final String CREATE_HOLIDAY_TABLE_QUERY=" CREATE TABLE IF NOT EXISTS"+SPACE+TABLE_HOLIDAY 
      +"(" +COL_HOLIDAY_TITLE+SPACE+"VARHCAR(200)"+COMMA+COL_HOLIDAY_DESC+SPACE+"VARCHAR(200)"+COMMA 
       +COL_HOLIDAY_START+SPACE+"VARCHAR(200)"+COMMA+COL_HOLIDAY_END+SPACE+"VARCHAR(200)" 
      + ")"; 
    private static final String CREATE_CLASSROUTINE_TABLE_QUERY="CREATE TABLE IF NOT EXISTS"+SPACE+TABLE_ROUTINE 
      +"(" + COL_START_TIME+SPACE+"VARCHAR(20)"+COMMA+COL_END_TIME+SPACE+"VARCHAR(20)"+COMMA+COL_SUBJECT_NAME+SPACE+"VARCHAR(20)" 
       +COMMA+COL_TEACHER_NAME+SPACE+"VARCHAR(150)" 
      +")"; 

    private static final String CREATE_REC_VERSION_TABLE="CREATE TABLE IF NOT EXISTS"+SPACE+TABLE_RECORD_VERSION+ 
      "(" +COL_LAST_EVENT_ID+SPACE+"INTEGER NOT NULL"+COMMA+COL_LAST_FRIEND_ID+SPACE+"INTEGER NOT NULL"+COMMA 
      +COL_LAST_HOLIDAY_ID+"INTEGER NOT NULL"+COMMA+COL_LAST_ROUTINE_ID+SPACE+"INTEGER NOT NULL" 
      + ")"; 





    public InAppCacheManager(Context context) { 
     super(context, DATABASE_NAME, null, DB_VERSION); 


    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 



     try { 

      db.execSQL(CREATE_REC_VERSION_TABLE); 
      db.execSQL(CREATE_FRIENDS_TABLE_QUERY); 
      db.execSQL(CREATE_CLASSROUTINE_TABLE_QUERY); 
      db.execSQL(CREATE_HOLIDAY_TABLE_QUERY); 
      db.execSQL(CREATE_EVENTS_TABLE_QUERY); 
      Log.i("Caching", "Caching environment all set"); 
      // Toast.makeText(mContext,"environemnt set for in-app caching",Toast.LENGTH_SHORT).show(); 
     }catch (SQLException ex) { 

      Log.e("CachingError;=>",ex.toString()); 
      // Toast.makeText(mContext,"Error in creating database for caching",Toast.LENGTH_LONG).show(); 

     } 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

    } 

    public class MapRoutine{ 

     String SubjectName; 
     String TeacherName; 
     String StartTime; 
     String EndTime; 
    } 
} 
+0

Und Ihr Code sieht wie aus? –

+0

Bitte [bearbeite deine Frage] (http://stackoverflow.com/posts/36092180/edit), um deinen Code einzuschließen –

+0

Außerdem solltest du wirklich die Antworten auf [deine alten Fragen] akzeptieren (http://stackoverflow.com)/users/4980199/raaz-dhakal) –

Antwort

0

Nach this Github issue, tritt dieser Fehler, wenn Sie die Datenbank ändern, ohne die Datenbank-Version zu aktualisieren.

Versuchen Sie, onUpgrade so zu implementieren, anstatt es leer zu haben.

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    if (oldVersion != newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_1); 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_2); 
     // ... 
     onCreate(db); 
    } 
} 
+1

Das Problem nicht lösen, bekomme ich diesen Fehler bei der ersten Installation der App. –

Verwandte Themen