마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

db query 문제ㅜㅜ

0 추천

    private static final String DB_NAME = "promise2.db";
    private static final int VERSION = 1;
    private static final String ID = "_id";
    private static final String MEETING = "meeting";
    private static final String TIME = "time";
    private static final String MEMO = "memo";

    private static final String TABLE_NAME = "promise";
    private static final String CREATE_TABLE =
        "CREATE TABLE "
    + TABLE_NAME + "("
    + ID + " integer primary key autoincrement, "
    + MEETING + " text not null, "
    + TIME + " text not null, "
    + MEMO + " text not null )";

    .

    .

    .

    // create
    public boolean insertInfo(String meeting, String time, String memo) {
        ContentValues cv = new ContentValues();
        cv.put(MEETING, meeting);
        cv.put(TIME, time);
        cv.put(MEMO, memo);
        return db.insert(TABLE_NAME,null,null) != -1;
    }

    // read
    public ArrayList<Info> getAllInfo() {
        ArrayList<Info> info = new ArrayList<Info>();
        Cursor c = db.query(TABLE_NAME,
          new String[] {ID, MEETING, TIME,MEMO}, null, null,null,null, ID + " DESC");

        if (c.moveToFirst()) {
            final int indexId = c.getColumnIndex(ID);
            final int indexMeeting = c.getColumnIndex(MEETING);
            final int indexTime = c.getColumnIndex(TIME);
            final int indexMemo = c.getColumnIndex(MEMO);

            do {
                int id = c.getInt(indexId);
                String meeting = c.getString(indexMeeting);
                String time = c.getString(indexTime);
                String memo = c.getString(indexMemo);
                info.add(new Info(id, meeting, time, memo));
            } while (c.moveToNext());
        }
        c.close();

        return info;
    }

    // update
    public boolean updateInfo(Info i) {
        ContentValues cv = new ContentValues();
        cv.put(MEETING, i.getMeeting());
        cv.put(TIME, i.getTime());
        cv.put(MEMO, i.getMemo());
        String[] params = new String[] { Integer.toString(i.getId()) };
        int result = db.update(TABLE_NAME, cv, ID + "=?", params);
        return result > 0;
    }

    // delete
    public boolean deleteInfo(int id) {
        String[] params = new String[] { Integer.toString(id) };
        int result = db.delete(TABLE_NAME, ID + "=?", params);
        return result > 0;
    }
   
    public boolean deleteAll() {
        int result=db.delete(TABLE_NAME, null, null);
        return result > 0;
     }
   
    }

오픈 소스에 메모란을 하나 더 만들려고 metting 이라는 값과 동일하게 memo를 만들었는데저기 위 빨간 부분에서 자꾸 에러가 납니다. 다른것 다 추가하고 정확히 했는데 무슨 문제 일까요..

오류 내역

11-04 22:06:02.656: E/AndroidRuntime(7005): Caused by: android.database.sqlite.SQLiteException: no such column: memo (code 1): , while compiling: SELECT _id, meeting, time, memo FROM promise ORDER BY _id DESC
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:941)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:552)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1342)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1189)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1060)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1228)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at com.example.travel.DbAdapter.getAllInfo(DbAdapter.java:70)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at com.example.travel.Main_list.onCreate(Main_list.java:55)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.app.Activity.performCreate(Activity.java:5220)
11-04 22:06:02.656: E/AndroidRuntime(7005):  at android.app.Instrumentation.callActivityOnCreate
 

parkcm1989 (390 포인트) 님이 2013년 11월 4일 질문

1개의 답변

0 추천
혹시 스키마 변경하시면서 onUpgrade에서 DB 날리고 다시 생성하신건가요?

앱 삭제 후 다시 설치해서 해보세요
libre2k (7,420 포인트) 님이 2013년 11월 5일 답변
...