2011-01-26 2 views
2

레코드를보고 해당 데이터를 사용자에게 표시하여 수정할 수있는 활동을 만들고 있습니다. 모든 작업이 완료되면 버튼을 클릭하여 데이터를 다시 데이터베이스에 저장하십시오. 그러나 절약 시간이 다가옴에 따라 "java.lang.IllegalArgumentException : Empty values"오류가 발생합니다. 내 생각에 그것은 SQL 코드 오류라고 생각하지만 SQL에 대해 충분히 알지 못한다. 내가 뭘 잘못했는지보기 위해 두 눈을 볼 수 있을까요? 저장 버튼을 선언하고 청취자가 설정되어있는 경우홀수 데이터베이스 오류 : 값이 비어 있습니까?

감사 ~ Aedon 여기

이다. mBoundService는 데이터베이스를 호스팅하고 호출하는 서비스입니다. DevicesTable은 테이블 및 열 이름을 보유하는 클래스입니다. DevicesTable.gt_fields [0] autoincrementID 후 시리얼, 이름이며, 제 열

public void init() {   
    mDevName = (EditText)findViewById(R.id.dv_name); 
    mCurReads = (TextView)findViewById(R.id.dv_readings); 
    mSave = (Button)findViewById(R.id.dv_save); 
     mSave.setOnClickListener(new OnClickListener() { 
      @Override public void onClick(View arg0) { 
       mBoundService.updateRecord(DevicesTable.gt_name, mId, DevicesTable.g_fields[2], mDevName.getText().toString()); 
      } 
     }); 
} 

보았고이 데이터베이스는 자신을 호출한다.

/** 
* Updates a record at the given table with the given record. 
* @param table The table to update 
* @param id The id of the actual record. Do not pass the incorrect id! 
* @param column The column in which the data is changing 
* @param data The data that is to be changed to 
*/ 
public void updateRecord(String table, String id, String column, String data) { 
    mDB.update(table, null, "SET " + column + " = '" + data + "',", new String[]{"id=" + id}); 
} 

답변

4

당신은 값이 업데이트 된 행 (들)에 어떤 컬럼에 가서 어떤 데이터베이스를 알려줄 수있는 ContentValues 객체를 전달해야합니다. 세 번째와 네 번째 인수의 문자열은 업데이트해야 할 행을 나타내는 WHERE 절을 구성합니다. 예를 들어 :

ContentValues values = new ContentValues(); 
values.put("foo", 123); 
values.put("bar", 456); 

db.update("some_table", values, "id=789", null); 

UPDATE some_table SET foo = 123, bar = 456 WHERE id = 789 

귀하의 코드는 WHERE 절에 전체 쿼리를 물건을 시도 쿼리를 실행하는 것과 것, 그리고 values 인수가 있기 때문에 update()은 당신의 트랙에서 당신을 중지 null.

+0

고맙습니다. 잘못된 것을보고있었습니다. 나는 문서가 ContentValues가 선택적이라고 말하고 있으며 WHERE 문을 통해 문자열 조작을 통해 그것을 할 수 있다고 생각했다. – AedonEtLIRA

+0

당신은 아마도 db.rawQuery ("UPDATE some_table SET foo =?, bar =? WHERE id =?", new String [] { "123", "456", "789"} 줄을 따라 뭔가를 생각하고있을 것입니다.)'. – Blrfl

관련 문제