2012-04-19 2 views
0

안드로이드에서 sqlite 데이터베이스의 전체 행을 업데이트하려고합니다. 그러나 어떤 이유로 예외가 발생합니다. 내 데이터베이스를 업데이트SQL을 업데이트하면 예외가 발생합니다.

방법은 다음과 같습니다

private ContentValues createContentValues(Evento evento){ 
     ContentValues val=new ContentValues(); 
     val.put(KEY_ROWID,evento.getIdEvento()); 
     val.put(KEY_SUMMARY,evento.getSummario()); 
     val.put(KEY_DAY,evento.getFecha().getDia()); 
     val.put(KEY_MONTH,evento.getFecha().getMes()); 
     val.put(KEY_YEAR,evento.getFecha().getAnho()); 
     val.put(KEY_STATUS,evento.getStatus()); 
     val.put(KEY_NOTES, evento.getNota()); 
     return val; 
    } 

및 업데이트 메소드를 호출하는 방법입니다 :

private void acceptAction(Evento evnt,String note){ 
     DbAdapter dbConn=new DbAdapter(this.getApplicationContext()); 
     evnt.setNota(note); 
     try{ 
     dbConn.updateEvent(evnt.getIdEvento(), evnt); 
     }catch(Exception e){ 
      Toast.makeText(this.getApplicationContext(), "Error al Actualizar tu Evento", Toast.LENGTH_SHORT).show(); 
      //Log.e("Error Candelaria", e.getMessage()); 
     } 
    } 

public void updateEvent(long rowId,Evento evento){ 
     int row=(int)rowId; 
     ContentValues eventValues=createContentValues(evento); 
     db.update(TABLE,eventValues,KEY_ROWID+"="+row,null); 
    } 

createContentValues ​​방법이있다 Exception 객체에는 정보가 없기 때문에 로그 엔트리 행이 주석 처리됩니다. printStackTrace() println이 NullPointerException을 throw하기 때문입니다.

UPDATE : 로그 캣 : KEY_ROWID 가정

04-19 13:53:15.910: E/AndroidRuntime(4934): java.lang.NullPointerException 
04-19 13:53:15.910: E/AndroidRuntime(4934):  at com.siitne.candelaria.data.DbAdapter.updateEvent(DbAdapter.java:48) 
04-19 13:53:15.910: E/AndroidRuntime(4934):  at com.siitne.candelaria.ImportantList.acceptAction(ImportantList.java:130) 
04-19 13:53:15.910: E/AndroidRuntime(4934):  at com.siitne.candelaria.ImportantList.access$3(ImportantList.java:126) 
04-19 13:53:15.910: E/AndroidRuntime(4934):  at com.siitne.candelaria.ImportantList$1$1.onClick(ImportantList.java:113) 
+0

logcat에 들어간거야? – dymmeh

+1

안드로이드에서는'println'이 작동하지 않습니다. 당신은 logcat – slayton

+0

에서 전체 stracktrace를 얻을 수 있습니다 어떤 오류가 발생하지 않습니다, 그래서 내가 코드와 함께 잘못 모르겠지만 - 내 테이블이 업데이 트되지 않습니다 때 토스트 메시지를 보여주는 예외를 잡으려고 업데이 트하려고 . – rafuru

답변

2

는 따옴표가 필요하지 않습니다 정수입니다.

db.update(TABLE,eventValues,KEY_ROWID+"="+row+"",null); 

당신은 스택 트레이스를 인쇄 할 필요가 없습니다 다음

db.update(TABLE,eventValues,KEY_ROWID+"= '"+row+"'",null); 

정수되지 않은 경우. 로그캣이라는보기가 있습니다. 그러면 완전한 오류 스택 추적이 표시됩니다.

EDIT : sqllception이 아닌 NullpointerException입니다. db도 null이 아니어야합니다. evento도 확인해야합니다.

1

KEY_ROWID + "= '"당신은 포함 누락

+ 행'

읽어야을

KEY_ROWID + "= '"+ 열 + "'"오류는 무엇

관련 문제