2012-04-19 101 views
0

我想在android上更新我的sqlite數據庫上的整個行。但由於某種原因拋出異常。更新SQL拋出異常

,更新我的數據庫中的方法是:

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

的createContentValues方法是這樣的:

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; 
    } 

,並調用Update方法的方法是:

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()); 
     } 
    } 

的日誌條目行被評論,因爲該異常對象不包含任何信息,我不能做一個printStackTrace(),因爲println引發NullPointerException。

UPDATE: logcat的:

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 2012-04-19 19:48:57

+1

'println'在android中不起作用。您可以從logcat – slayton 2012-04-19 19:49:04

+0

得到完整的跟蹤信息,但不會收到任何錯誤,所以我不知道代碼出了什麼問題 - 但是我的表未更新,嘗試更新時捕獲顯示Toast消息的異常。 – rafuru 2012-04-19 19:50:20

回答

2

假設KEY_ROWID是整數你不需要單引號。

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

如果不是整數,然後

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

你並不需要打印堆棧跟蹤。有一個叫做Logcat的視圖。這將顯示完整的錯誤堆棧跟蹤。

編輯:這是NullpointerException,而不是sqlexception。您需要確保db也不爲空evento也。

1

KEY_ROWID + 「= '」 +排

你缺少封閉 '

應該讀

KEY_ROWID + 「='」 +行+ 「'」