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 回答