2013-02-22 247 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); 
} 

我想只需拍攝的用戶名刪除在我的數據庫中的特定行。我輸入爲要刪除的行的ID。怎麼做,或者有什麼替代品可以使用?

回答

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

編輯:如果你剛纔複製的方法,你將不必打開和手動關閉數據庫了,所以你的線條

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

的情況下,試試這個您的where子句包含不同類型的值。在從那裏你調用這個方法delete()方法

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

OR

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

    } 

傳遞參數。

favourite.delete(Courseid,Username,Password); 

這裏favourite的是,我們在activity()創建數據庫對象,從中我們呼籲delete()功能