2017-11-30 7 views
-2

sqlite db를 사용하려고했지만 db가 새 레코드 항목을 허용하지 않았습니다. 다음은 내 오류 로그입니다. 오류 로그 : 여기SQLite 데이터베이스 학생 이름 열을 찾을 수 없습니다.

E/SQLiteLog: (1) table students has no column named studentName 
11-30 12:56:01.576 11160-11160/com.webutu.cordiscorp.schoolbus E/SQLiteDatabase: Error inserting studentName=ADE sex=HD address=QS status=SAHDB studentClass=SAHDB parentNo=908 studentParent=K 
                       android.database.sqlite.SQLiteException: table students has no column named studentName (code 1): , while compiling: INSERT INTO students(studentName,sex,address,status,studentClass,parentNo,studentParent) VALUES (?,?,?,?,?,?,?) 
                        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
                        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
                        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
                        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
                        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
                        at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
                        at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467) 
                        at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339) 
                        at com.webutu.cordiscorp.schoolbus.Attendance.DatabaseHandler.addStudent(DatabaseHandler.java:70) 
                        at com.webutu.cordiscorp.schoolbus.AttendanceFragment$2.onClick(AttendanceFragment.java:112) 
                        at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:161) 
                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                        at android.os.Looper.loop(Looper.java:136) 
                        at android.app.ActivityThread.main(ActivityThread.java:5021) 
                        at java.lang.reflect.Method.invokeNative(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:515) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
                        at dalvik.system.NativeStart.main(Native Method) 

내 DatabaseHander.class

public class DatabaseHandler extends SQLiteOpenHelper { 

    private static final int DATABASE_VERSION = 4; 
    private static final String DATABASE_NAME = "studentsAttendance"; 
    private static final String TABLE_STUDENTS = "students"; 

    private static final String KEY_ID   = "id"; 
    private static final String KEY_NAME  = "studentName"; 
    private static final String KEY_CLASS  = "studentClass"; 
    private static final String KEY_PARENT  = "studentParent"; 
    private static final String KEY_STATUS  = "status"; 
    private static final String KEY_ADDRESS  = "address"; 
    private static final String KEY_PARENT_NO = "parentNo"; 
    private static final String KEY_SEX   = "sex"; 


    public DatabaseHandler(Context context){ 
     super(context,DATABASE_NAME,null,DATABASE_VERSION); 
    } 

    //create db 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String CREATE_STUDENTS_TABLE = "CREATE TABLE " 
       +TABLE_STUDENTS+ "(" 
       +KEY_ID + "INTEGER PRIMARY KEY," 
       +KEY_NAME +"TEXT," 
       +KEY_CLASS + "TEXT," 
       +KEY_PARENT + "TEXT," 
       +KEY_STATUS + "TEXT," 
       +KEY_ADDRESS+ "TEXT," 
       +KEY_SEX+ "TEXT," 
       +KEY_PARENT_NO+"TEXT"+");"; 
     db.execSQL(CREATE_STUDENTS_TABLE); 
    } 

    //upgrade db 
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS "+TABLE_STUDENTS); 
     onCreate(db); 
    } 

    //add new student 
    public void addStudent(Student student){ 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues values = new ContentValues(); 
     values.put(KEY_NAME,student.get_studentName()); 
     values.put(KEY_CLASS,student.get_studentClass()); 
     values.put(KEY_PARENT,student.get_studentParent()); 
     values.put(KEY_SEX,student.get_sex()); 
     values.put(KEY_STATUS,student.get_status()); 
     values.put(KEY_ADDRESS,student.get_address()); 
     values.put(KEY_PARENT_NO,student.get_parentNo()); 
     db.insert(TABLE_STUDENTS,null,values); 
     db.close(); 
    } 
} 

Student.class 

public class Student { 
    private int _id; 
    private String _studentName; 
    private String _studentClass; 
    private String _studentParent; 
    private String _status; 
    private String _address; 
    private String _parentNo; 
    private String _sex; 


    public Student(){ 

    } 
    public Student(int id, String studentName, String studentClass, String studentParent, String status, String sex, String address, String parentNo){ 
     this._id = id; 
     this._studentName = studentName; 
     this._studentClass = studentClass; 
     this._studentParent = studentParent; 
     this._status = status; 
     this._address = address; 
     this._sex = sex; 
     this._parentNo = parentNo; 
    } 
    public Student(String studentName, String studentClass, String studentParent, String status, String address,String sex, String parentNo){ 
     this._studentName = studentName; 
     this._studentClass = studentClass; 
     this._studentParent = studentParent; 
     this._status = status; 
     this._sex = sex; 
     this._address = address; 
     this._parentNo = parentNo; 
    } 


    public int getID(){ 
     return this._id; 
    } 
    public void setID(int id){ 
     this._id = id; 
    } 
    public String get_studentName(){ 
     return this._studentName; 
    } 
    public void set_studentName(String studentName){ 
     this._studentName = studentName; 
    } 
    public String get_studentClass(){ 
     return this._studentClass; 
    } 
    public void set_studentClass(String studentClass){ 
     this._studentClass = studentClass; 
    } 
    public String get_studentParent(){ 
     return this._studentParent; 
    } 
    public void set_studentParent(String studentParent){ 
     this._studentParent = studentParent; 
    } 
    public String get_status(){ 
     return this._status; 
    } 
    public void set_status(String status){ 
     this._status = status; 
    } 
    public String get_sex(){ 
     return this._sex; 
    } 
    public void set_sex(String sex){ 
     this._sex = sex; 
    } 
    public String get_address(){ 
     return this._address; 
    } 
    public void set_address(String address){ 
     this._address = address; 
    } 
    public String get_parentNo(){ 
     return this._parentNo; 
    } 
    public void set_parentNo(String parentNo){ 
     this._parentNo = parentNo; 
    } 
} 
+0

변경 DB 버전과 –

+1

*이 질문이 더 이상 재현 할 수없는 문제 또는 간단한 인쇄상의 오류로 인해 발생했다. * "식사"하지 마십시오 공백을 실행 ... 분명히 테이블이 idINTEGER 같은 열이 , nameTEXT ... – Selvin

+0

이미 동일한 오류가 발생했습니다 @ Mord Saquib – Asendo

답변

1

변화 당신이 필요없는 공간이 없기 때문에 테이블 쿼리를 작성합니다. 앱에서 삽입을 다시 실행 한 후

String CREATE_STUDENTS_TABLE = "CREATE TABLE IF NOT EXISTS " 
       + TABLE_STUDENTS + "(" 
       + KEY_ID + " INTEGER PRIMARY KEY, " 
       + KEY_NAME +" TEXT, " 
       + KEY_CLASS + " TEXT, " 
       + KEY_PARENT + " TEXT, " 
       + KEY_STATUS + " TEXT, " 
       + KEY_ADDRESS + " TEXT, " 
       + KEY_SEX + " TEXT, " 
       + KEY_PARENT_NO +" TEXT);"; 
+0

이미 동일한 오류가 발생했습니다. – Asendo