2013-07-10 2 views
0

편집 할 때 레코드를 업데이트하는 데 문제가 있습니다. 데이터베이스 업데이트 방법에 대한 올바른 코드를 모르기 때문에 DatabaseHandler에 있다고 생각합니다. 누군가이 문제를 해결하도록 도울 수 있습니까?안드로이드에서 SQLite의 테이블에서 레코드를 업데이트하지 않습니다.

btn_Update.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 
     String ReportCode = tv_Code.getText().toString(); 

     //Casting and conversion for district code 
     String District = spn_District.getSelectedItem().toString(); 
     Cursor rDistrict = databaseHandler.getReport_DistrictCode(District); 
     String DistrictCode = rDistrict.getString(rDistrict.getColumnIndex(Constants.DISTRICT_CODE)); 

     //Casting and conversion for province id 
     String Province = spn_Province.getSelectedItem().toString(); 
     Cursor rProvince = databaseHandler.getReport_ProvinceId(Province); 
     String ProvinceCode = rProvince.getString(rProvince.getColumnIndex(Constants.PROVINCE_ID)); 

     //Casting and conversion for InfoType id 
     String InfoType = spn_InfoType.getSelectedItem().toString(); 
     Cursor rInfoType = databaseHandler.getReport_InfoTypeCode(InfoType); 
     String InfoTypeCode = rInfoType.getString(rInfoType.getColumnIndex(Constants.INFORMATIONTYPE_CODE)); 

     int IsCompetitor = chkString; 
     String DateObserved = txt_Date.getText().toString(); 
     String Remarks = txt_Remarks.getText().toString(); 

     //UPDATE IREPORT 
     databaseHandler.UpdateReport(new Cons_iReport (ReportCode, InfoTypeCode, DistrictCode, ProvinceCode, DateObserved, IsCompetitor, Remarks)); 
     Toast.makeText(getApplicationContext(), "UPDATE!", Toast.LENGTH_SHORT).show(); 

    } 
}); 

DatabaseHandler.java

public void UpdateReport(Cons_iReport save){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(Constants.REPORT_CODE, save.getReportCode()); // Save Report Code 
    values.put(Constants.REPORT_DISTRICTCODE, save.getDistrict()); // Save District 
    values.put(Constants.REPORT_PROVINCECODE, save.getProvince()); // Save Province 
    values.put(Constants.REPORT_ISCOMPETITOR, save.getCompetitor()); // Save isCompetitor 
    values.put(Constants.REPORT_INFOTYPECODE, save.getInfoType()); // Save infoType 
    values.put(Constants.REPORT_DATEOBSERVED, save.getDateObserved()); // Save Date Observed 
    values.put(Constants.REPORT_REMARKS, save.getRemarks()); // Save Remarks 

    db.update(Constants.TABLE_REPORT, values, Constants.REPORT_CODE+" = ?", null); 
    db.close(); 
} 
+0

db.update의 반환 값을 확인하여 시작하십시오. – njzk2

+1

다음 업데이트 설명서를 읽고 선택 사항에 결함이 있는지 확인하십시오. 너? 매개 변수의 null 배열과 일치 할 수 없습니다. – njzk2

답변

1

귀하의 whereArgs 당신은 그들을 제공 할 필요하거나 업데이트하는 모든 레코드를 찾을 수 없습니다

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#update(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[])

null

db.update(Constants.TABLE_REPORT, values, Constants.REPORT_CODE+" = ?", null); 
있습니다.

"이것은 Constants.REPORT_CODE가 ...와 같은 레코드 업데이트 ..."와 동일합니다. REPORT_CODE를 업데이트 할 내용을 알려줘야합니다.

관련 문제