2012-01-15 2 views
0

auto_increment를 기본 키로 사용하는 특정 행을 업데이트하려고합니다. 기본적으로 한 활동에서 테이블을 초기화하고 다른 테이블에서 테이블을 완성하려고합니다. 그래서 업데이트 기능을 사용합니다. 그러나 영향을받는 행의 수를 확인하기 위해 로그를하면 다시 0이됩니다. 다음은 내 코드입니다 : 내가 생각Android 용 SQLite의 특정 행을 업데이트하십시오.

public void updateValue(String updatedValue){ 
String strFilter = " (" + primaryKey + "== "+ "(SELECT last_insert_rowid())" + ")"; 
    ContentValues values = new ContentValues(); 
    values.put(val, updatedValue); 
    db = this.getWritableDatabase(); 

    int rows= db.update(myTable, values, strFilter, null); 
    Log.d(LOG_TAG, "The change has affected " + rows 
      + " rows."); 
    db.close(); 

} 

답변

0

그 다음 줄의 문제 :

String strFilter = " (" + primaryKey + "== "+ "(SELECT last_insert_rowid())" + ")"; 

그것은 작성해야합니다, 나는 다음과 같은 방법으로 추측 :

String strFilter = primaryKey + "=" + "(SELECT last_insert_rowid())"; 

그러나 마지막으로 삽입 된 행을 반환하는지 여부와 관계없이이 부분의 반환을 제어해야합니다 ((SELECT last_insert_rowid())).

0

사용

"String query = SELECT seq from SQLITE_SEQUENCE WHERE name = \'"+tableName+"\'"; 

대신

SELECT last_insert_rowid() 
+0

서열은 무엇인가? 내 기본 키의 이름을 사용하는 것을 의미합니까? – JustCurious

+0

seq는 autoincrement의 값을 보유하는 sqlite_sequence 테이블의 특수 필드입니다. 자동 증가 값을 찾고있는 표를 나타내면됩니다. –

관련 문제