2013-08-18 3 views
1

데이터베이스 핸들러 파일에서 아래 지정된 함수를 사용하고 싶습니다. 그것을 구현할 때 javaNullpointerException이 올 것이다. 나는 확실히 뭔가를 놓친다.sqlite에서 delete 함수를 호출하는 방법

삭제 기능 :

// Deleting single contact 
public void deleteContact(Contact contact) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.delete(TABLE_CONTACTS, KEY_ID + " = ?",new String[] { String.valueOf(contact.getID()) }); 
    db.close(); 
} 

내가으로 사용하는 것을 시도하고있다 :

 DatabaseHandler db = new DatabaseHandler(this); 
Contact pm = null; 
Intent i; 
i = getIntent(); 
pm._id= i.getExtras().getInt("id"); 
pm._name = i.getExtras().getString("name"); 
pm._phone_number = i.getExtras().getString("phone_number"); 

     // **Some problem is here I am not getting it 

         db.deleteContact(pm); 
         Toast.makeText(getApplicationContext(),"Deleted..",Toast.LENGTH_SHORT).show(); 

로그 캣 :에서

08-19 01:15:00.726: E/AndroidRuntime(12657): FATAL EXCEPTION: main 
08-19 01:15:00.726: E/AndroidRuntime(12657): java.lang.NullPointerException 
08-19 01:15:00.726: E/AndroidRuntime(12657): at com.parth.targetthebudget.ViewContact$ListAdapter$2$1.onClick(ViewContact.java:151) 
08-19 01:15:00.726: E/AndroidRuntime(12657): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163) 
08-19 01:15:00.726: E/AndroidRuntime(12657): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-19 01:15:00.726: E/AndroidRuntime(12657): at android.os.Looper.loop(Looper.java:130) 
08-19 01:15:00.726: E/AndroidRuntime(12657): at android.app.ActivityThread.main(ActivityThread.java:3687) 
08-19 01:15:00.726: E/AndroidRuntime(12657): at java.lang.reflect.Method.invokeNative(Native Method) 
08-19 01:15:00.726: E/AndroidRuntime(12657): at java.lang.reflect.Method.invoke(Method.java:507) 
08-19 01:15:00.726: E/AndroidRuntime(12657): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
08-19 01:15:00.726: E/AndroidRuntime(12657): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
08-19 01:15:00.726: E/AndroidRuntime(12657): at dalvik.system.NativeStart.main(Native Method) 

답변

2

데이터와 일치하는 레코드를 삭제할 수 있도록 1 액티비티에서 다른 액티비티로 데이터를 보내려고한다는 것을 이해합니까?

당신이 가지고있는 연락처 pm = null; 그러면 데이터베이스에 null 레코드의 ID를 가져 오려고합니다. 메신저 확실히 당신이이 http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

Contact pm = null; 
pm._id= i.getExtras().getInt("id"); 
pm._name = i.getExtras().getString("name"); 
pm._phone_number = i.getExtras().getString("phone_number"); 

당신이 의도

+0

예에 보낸 것과 동일한 ID를 가진 레코드를 제거합니다

Contact pm = db.getContact(i.getExtras().getInt("id")); 

을 추가, 제거 다음, 나는 이미 있었다 이것을 시도했지만 문제는 ID = 1을 부여한 경우 logcat이 08-19 01 : 40 : 20.351 : E/AndroidRuntime (13678) : android.database.CursorIndexOutOfBoundsException : 요청한 색인 0 0의 크기입니다.은 ID = 1의 데이터를 삭제하지 않는다는 것을 의미합니다! – arraystack

+0

ID가 1 인 레코드가 있습니까? –