さて、状況は次のとおりです。Android のクラスを拡張するクラスを作成しましたSQLOpenHelper
。また、テーブルを初期化し、現在のテーブルを削除してから新しいテーブルを再作成するために必要なメソッドonCreate
およびも実装しました。onUpgrade
テーブルは正常に作成されましたが、新しいレコードをデータベースに挿入するメソッドを呼び出そうとすると、代わりに LogCat から次のように返されました。
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
この問題に関していくつかの検索を行いました。回答のほとんどは、アプリを再インストールしてプロセスを繰り返すことを提案しています。完了しましたが、まだ成功していません。
ここに私の SQLiteOpenHelperonCreate
メソッドがあります:
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();
}
}
私は Androidの初心者で、このチュートリアルをガイドとして使用していました。
前もって感謝します!:)