2016-09-15 2 views
-3

SQLite에서 행의 일부 열을 Android 앱으로 업데이트하려고하는데, 잘 모르는이 오류가 발생했습니다. 어디에서 왔는지. android.database.sqlite.SQLiteException : 해당 열 없음 : 컴파일 중 : UPDATE

android.database.sqlite.SQLiteException: no such column: location (code 1): , while compiling: UPDATE user SET email=?,location=?,mobile=? WHERE id=? 

내가 업데이트하는 데 사용하는 코드입니다 정보 :이있는 모든 열이 사용되는 내 테이블

public void updateUserInfo(String mobile, String email, String location) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    String[] tablei = new String[1]; 
    tablei[0] = "1"; 

    ContentValues values = new ContentValues(); 
    values.put(KEY_MOBILE, mobile); // Mobile 
    values.put(KEY_EMAIL, email); // Email 
    values.put(KEY_LOCATION, location); // Location 

    // Inserting Row 
    //long id = db.update().insert(TABLE_USER, null, values); 
    long id = db.update(TABLE_USER, values, "id=?", tablei); 
    db.close(); // Closing database connection 

    Log.d(TAG, "Info of user updated in sqlite: " + id); 
} 

:

private static final String KEY_ID = "id"; 
    private static final String KEY_LOCATION = "location"; 
          ..... 

    String CREATE_LOGIN_TABLE = "CREATE TABLE " + TABLE_USER + "(" 
      + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," 
      + KEY_EMAIL + " TEXT UNIQUE," + KEY_APIKEY + " TEXT," 
      + KEY_MOBILE + " TEXT," + KEY_LOCATION + " TEXT," 
      + KEY_CREATED_AT + " TEXT" + ")"; 

가 사전에 감사하여 도와주세요!

+2

DatabaseHelper 클래스를 사용합니까? 그렇다면 DATABASE_VERSION을 증가시켜야합니다. APP를 재설치해도 문제가 해결 될 수 있습니다. – lidox

+0

생성 테이블 코드를 게시 할 수 있습니까? – adalPaRi

+0

앱을 삭제하고 다시 설치했는데 성공했습니다! 하지만 onUpgrade 메서드를 재정의합니다. 이것으로 충분하지 않습니까? – Othmane

답변

3

응용 프로그램의 첫 번째 설치 후 데이터베이스 구성표를 수정했다고 생각합니다.

데이터베이스의 이전 버전에서 새 버전으로 업데이트 스크립트를 작성해야합니다. (ALTER TABLE tablename ADD COLUMN ....)

또는 삭제하고 응용 프로그램을 다시 설치하십시오.

+0

네 말이 맞아, 나는 데이터베이스를 수정했다. 설치 제거가 나를 위해 일했습니다. –

관련 문제