2011-09-17 4 views
1

나는 안드로이드를 처음 사용합니다 ... 데이터베이스 응용 프로그램을 개발했습니다. 텍스트 필드를 삽입 할 수 있었지만 특정 행을 삭제하려고했습니다. 이름으로 검색하고 사용자를 삭제해야합니다.DB에서 행을 삭제하는 방법

사람이 나를 도울 수 :

내 DB 코드는 다음과 같습니다

public void deleteRow(String firstname) 
{ 

    try {db.delete(TABLE_NAME,TABLE_ROW_ONE + "=?" + new String[]{firstname},null);} 
    catch (Exception e) 
    { 
     Log.e("DB ERROR", e.toString()); 
     e.printStackTrace(); 
    } 
} 

Activty 코드는 다음과 같습니다

deleteButton.setOnClickListener ( 새로운 View.OnClickListener() { @Override public void onClick (View v) {deleteRow();} } );

개인 무효 deleteRow를() { 는 {

 db.deleteRow(textFieldOne.getText().toString()); 


     updateTable(); 


     emptyFormFields(); 
    } 
    catch (Exception e) 
    { 
     Log.e("Delete Error", e.toString()); 
     e.printStackTrace(); 
    } 
} 

textFieldOne는 사용자의 이름입니다보십시오.

사람이 나를 도울 수 ..

+0

왜 표준 SQL 쿼리를 사용하지 않습니까? – terrygarcia

답변

0

이 이> ---- 같은 TABLE_ROW_ONE +를

db.delete (TABLE_NAME을 ... 당신의 삭제 방법에서 널 (null) 인수를 제거 "= ? "+ new String [] {firstname}); 그것은 잘 작동합니다

...

0

난 당신이 안드로이드 + sqlite가에서 ?의 목적을 오해 것 같아요.

?은 자리 표시 자로 사용되며 삭제 된 세 번째 인수 및 Android의 다른 유사한 데이터베이스 기능으로 전달되는 문자열로 대체됩니다.

코드에서 선택 인수를 선택 문자열과 선택 인수 문자열 배열의 조합으로 설정합니다.

트릭을 할해야

/* ... */ TABLE_ROW_ONE + "=?", new String[]{firstname}); 

/* ... */ TABLE_ROW_ONE + "=?" + new String[]{firstname},null); 

의 코드를 변경. 당신이 원하는하지만 빠르게 다음 시간이 될 것 있도록 ?의 목적은 쿼리 캐싱 어떤 종류의 일을하는 경우

또한 단지

db.delete(TABLE_NAME, TABLE_ROW_ONE + "='" + firstname + "'", null); 

을 말할 수있다.

+0

안녕 얘들 아 고마워,하지만 아무것도 나를 위해 일한 .. –

+0

안녕 얘들 아 고마워,하지만 아무것도 나를 위해 일한 ..공공 무효 deleteRow를 (문자열 FIRSTNAME) \t { \t \t // ID를 부여 \t \t 시도의 행을 삭제하기 위해 데이터베이스 관리자에게 문의 { \t \t \t \t \t \t db.delete (TABLE_NAME, TABLE_ROW_ONE + "=" + firstname, null); \t \t \t \t \t \t \t} \t \t 캐치 (예외 전자) \t \t { \t \t \t Log.e ("DB 오류", e.toString()); \t \t \t e.printStackTrace(); \t \t} 내가 행 ID에 의해 삭제 될 때 \t} –

+0

이 삭제됩니다,하지만 난 이름으로 검색하고 삭제하려는 ...하지만 이런 일이되지는 .. –

관련 문제