좋아요, 여기 상황이 있습니다 : Android의 SQLOpenHelper
클래스를 확장 한 클래스를 만들었습니다. 또한 필요한 메소드 인 onCreate
과 onUpgrade
을 구현하여 테이블을 초기화하고 현재 테이블을 삭제 한 다음 새 테이블을 각각 다시 작성했습니다.Android SQLite 선언 된 열을 찾을 수 없습니다.
테이블이 성공적으로 작성하지만 데이터베이스 로그 캣에 새로운 레코드를 삽입하는 메소드를 호출하려고 할 때 나 대신이 준되었다 :
06-17 21:31:19.907: I/SqliteDatabaseCpp(561): sqlite returned: error code = 1, msg = table calendarEvents has no column named colour, db=/data/data/stub.binusitdirectorate.calendar/databases/calendarSQLite
나는이 문제에 관한 몇 가지 검색을 수행했습니다. 대부분의 답변은 앱을 다시 설치하고 프로세스를 반복하도록 제안했습니다. 완료되었지만 여전히 성공하지 못했습니다. 여기
public void onCreate(SQLiteDatabase db) {
String CREATE_EVENTS_TABLE = "CREATE TABLE " + EVENTS_TABLE + "("
+ KEY_EVENTS_TYPE_ID + " TEXT PRIMARY KEY,"
+ KEY_EVENTS_TYPE_NAME + " TEXT," + KEY_EVENTS_NAME + " TEXT,"
+ KEY_EVENTS_COLOR + "TEXT," + KEY_EVENTS_START_DATE + "DATE,"
+ KEY_EVENTS_END_DATE + "TEXT" + ")"
db.execSQL(CREATE_EVENTS_TABLE);
}
그리고 새 레코드를 삽입하기위한 나의 방법이다 :
public void addEventsList(ArrayList<CalendarEventData> lstCalendarEvents) {
SQLiteDatabase db = this.getWritableDatabase();
if (lstCalendarEvents != null && db != null) {
for (int i = 0; i < lstCalendarEvents.size(); i++) {
ContentValues values = new ContentValues();
values.put(KEY_EVENTS_TYPE_ID, lstCalendarEvents.get(i)
.getEventTypeId());
values.put(KEY_EVENTS_TYPE_NAME, lstCalendarEvents.get(i)
.getEventTypeName());
values.put(KEY_EVENTS_NAME, lstCalendarEvents.get(i)
.getEventName());
values.put(KEY_EVENTS_COLOR, lstCalendarEvents.get(i)
.getColour());
values.put(KEY_EVENTS_START_DATE, DateUtils
.getFormattedDateString(lstCalendarEvents.get(i)
.getStartDateTime(), dateFormat));
values.put(KEY_EVENTS_END_DATE, DateUtils
.getFormattedDateString(lstCalendarEvents.get(i)
.getEndDateTime(), dateFormat));
db.insert(EVENTS_TABLE, null, values);
}
db.close();
}
}
나는 안드로이드 비교적 새로운 해요 및 가이드로 this tutorial을 사용했다가
여기 내 SQLiteOpenHelper onCreate
방법입니다.
미리 감사드립니다. :) 당신의 생성 문
보조 노트에 전에 공백이 누락 문제
가 발생할 수 있습니다 :'문자열 KEY_EVENTS_COLOR'는 "컬러"를 포함하고 있습니다. 그래서 오타가 아닙니다 :) – rhadri