-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;
}
}
변경 DB 버전과 –
*이 질문이 더 이상 재현 할 수없는 문제 또는 간단한 인쇄상의 오류로 인해 발생했다. * "식사"하지 마십시오 공백을 실행 ... 분명히 테이블이 idINTEGER 같은 열이 , nameTEXT ... – Selvin
이미 동일한 오류가 발생했습니다 @ Mord Saquib – Asendo