0

さて、状況は次のとおりです。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の初心者で、このチュートリアルをガイドとして使用していました。

前もって感謝します!:)

4

1 に答える 1

2

create ステートメントのこの部分で問題が発生する可能性があります

KEY_EVENTS_COLOR + "TEXT," + KEY_EVENTS_START_DATE + "DATE,"
                + KEY_EVENTS_END_DATE + "TEXT" + ")"

どこでも TEXT の前にスペースがありません:)

于 2012-06-17T15:33:37.720 に答える