[java] Android의 SQLite 특정 행을 업데이트하는 방법

한동안 특정 행을 업데이트하려고했지만 두 가지 방법이 있습니다. 내가 읽고 시도한 것에서 다음을 사용할 수 있습니다.

execSQL(String sql) 방법

아니면 그:

update(String table, ContentValues values, String whereClause, String[] whereArgs) 방법.

(안드로이드를 처음 사용하고 SQL을 처음 접했을 때 이것이 잘못된 지 알려주세요.)

실제 코드를 보도록하겠습니다.

myDB.update(TableName, "(Field1, Field2, Field3)" + " VALUES ('Bob', 19, 'Male')", "where _id = 1", null);

나는 이것을 달성하려고 노력하고있다 :

기본 키 (_id)가 1 인 Field1, Field2 및 Field3을 업데이트하십시오.

Eclipse는 “update”라는 단어 바로 아래에 빨간색 선을 표시하고 다음 설명을 제공합니다.

SQLiteDatabase 유형의 update (String, ContentValues, String, String []) 메소드는 인수 (String, String, String, null)에 적용 할 수 없습니다.

ContentValues를 올바르게 할당하지 않은 것 같습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?



답변

먼저 ContentValues ​​객체를 만듭니다.

ContentValues cv = new ContentValues();
cv.put("Field1","Bob"); //These Fields should be your String values of actual column names
cv.put("Field2","19");
cv.put("Field2","Male");

그런 다음 업데이트 방법을 사용하면 이제 작동합니다.

myDB.update(TableName, cv, "_id="+id, null);


답변

간단한 방법 :

String strSQL = "UPDATE myTable SET Column1 = someValue WHERE columnId = "+ someValue;

myDataBase.execSQL(strSQL);


답변

먼저 ContentValues 객체를 만듭니다.

ContentValues cv = new ContentValues();
cv.put("Field1","Bob");
cv.put("Field2","19");

그런 다음 업데이트 방법을 사용하십시오. 세 번째 인수는 where 절입니다. “?” 자리 표시 자입니다. 네 번째 인수 (id)로 대체됩니다.

myDB.update(MY_TABLE_NAME, cv, "_id = ?", new String[]{id});

특정 행을 업데이트하는 가장 깨끗한 솔루션입니다.


답변

  1. 개인적으로 편의를 위해 .update를 선호합니다. 그러나 execsql은 동일하게 작동합니다.
  2. 당신은 문제가 당신의 콘텐츠 가치라는 추측에 옳습니다. ContentValue 오브젝트를 작성하고 데이터베이스 행의 값을 거기에 두어야합니다.

이 코드는 예제를 수정해야합니다.

 ContentValues data=new ContentValues();
 data.put("Field1","bob");
 data.put("Field2",19);
 data.put("Field3","male");
 DB.update(Tablename, data, "_id=" + id, null);


답변

당신은 이것을 시도 할 수 있습니다 …

db.execSQL("UPDATE DB_TABLE SET YOUR_COLUMN='newValue' WHERE id=6 ");


답변

이것이 도움이되기를 바랍니다.

public boolean updatedetails(long rowId, String address)
  {
     SQLiteDatabase mDb= this.getWritableDatabase();
   ContentValues args = new ContentValues();
   args.put(KEY_ROWID, rowId);
   args.put(KEY_ADDRESS, address);
  return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null)>0;
 }


답변

SQLite 에서이 하나의 업데이트 방법을 시도하십시오.

int id;
ContentValues con = new ContentValues();
con.put(TITLE, title);
con.put(AREA, area);
con.put(DESCR, desc);
con.put(TAG, tag);
myDataBase.update(TABLE, con, KEY_ID + "=" + id,null);