2013-02-22 4 views
4

Я пытаюсь сделать простую страницу входа, где я могу удалить конкретный контакт с его данными, просто введя имя пользователя.Android SQLite удаляет определенную строку из базы данных

Другими словами, я хотел бы удалить определенную строку в моей базе данных.

public int deleteUsername(String content){ 

    String whereClause = KEY_CONTENT1 + "= '" + content + "'"; 

    return sqLiteDatabase.delete(MYDATABASE_TABLE, whereClause, null); 
} 

public int deletePassword(String content){ 

    String whereClause = KEY_CONTENT2 + "= '" + content + "'"; 

    return sqLiteDatabase.delete(MYDATABASE_TABLE, whereClause, null); 
} 

public void onClick(View v) { 

    String username = null; 
    String password = null; 

    username = this.txtnewuserinputedituser.getText().toString().toUpperCase(); 
    password = this.txtnewpasswordinputedituser.getText().toString().toUpperCase(); 


    switch (v.getId()) 
    { 

    case R.id.btndeleteuser : 
    { 


     mySQL.openToWrite(); 
     mySQL.deleteUsername(username); 
     mySQL.deletePassword(password);; 
     mySQL.close(); 

     String toastText = "User Deleted"; 
     Toast.makeText(getApplicationContext(), toastText, Toast.LENGTH_SHORT).show(); 

     break; 
    } 
    } 
    } 

Это означает, что я должен ввести имя пользователя и пароль в editview для того, чтобы удалить этот конкретный пользователь. Я нашел несколько источников, которые говорили мне использовать что-то вроде этого , но я попробовал, и он не работает. Есть ли ошибка?

public int deleteRow(String showId) { 
    String table_name = "MYDATABASE_TABLE"; 
    String where = "showId='"+showId+"'"; 
    return sqLiteDatabase.delete(table_name, where, null); 
} 

Я хотел бы удалить определенную строку в моей базе данных, просто принимая имя пользователя. Я вводим как идентификатор строки, которую нужно удалить. Как это сделать, или есть ли альтернативы, которые я могу использовать?

ответ

15

Вам не нужно удалять каждую запись в строке отдельно. Следующий метод должен удалить строку, где поле username равно принятому userName. Поле password и любое другое поле в строке также будут удалены.

public void deleteUser(String userName) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    try 
    { 
     db.delete(MYDATABASE_TABLE, "username = ?", new String[] { userName }); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     db.close(); 
    } 
} 

EDIT: если вы просто скопировать метод, вам не придется открывать и закрывать вручную DB больше, так что ваши линии

mySQL.openToWrite(); 
mySQL.deleteUsername(username); 
mySQL.deletePassword(password);; 
mySQL.close(); 

стал бы только

mySQL.deleteUser(username); 
3

вы можете использовать простой SQL-запрос для удаления определенной строки Соответствие требованиям к sql

DELETE FROM table_name WHERE some_column=some_value; поэтому используйте

db.execSQL("delete from " + Message.TABLENAME +" where specific_row_to_delete=\'" + user_name);

и если у вас есть более одного where состояние, то вы можете использовать AND как

db.execSQL("delete from " + TABLENAME + 
      " where specific_row_to_delete=\'" + user_name + 
      "\' and condition_to_delete >= " + condtion_argument); 
1

Попробуйте это в случае, если ваш где положение содержит различные типы значений.

public void delete(int Cid,String username,String password) 
    { 
     SQLiteDatabase database = this.getWritableDatabase(); 
     database.delete(TABLE_NAME, KEY_CID + "=" + Cid + " and " + KEY_UserName + "=" + username + " and " + KEY_Password + "=" + password, null); 
     database.close(); 
    } 

ИЛИ

public void delete(int Cid,String username,String password) 
    { 
     SQLiteDatabase database = this.getWritableDatabase(); 

     database.execSQL("DELETE FROM " + TABLE_NAME+ " WHERE " +KEY_CID+ "= '"+Cid+"'AND "+KEY_Password+"='"+password+"'" + 
       "AND "+KEY_UserName+"='"+username+"'"); 
     database.close(); 

    } 

параметры проходят в delete() методе, из которого вы вызываете этот метод.

Пример

favourite.delete(Courseid,Username,Password); 

Здесь favourite это объект базы данных, которую мы создали в нашем activity(), из которого мы называем delete() функцию