2013-02-22 121 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()功能