Android SQLite从数据库中删除特定行

时间:2013-02-22 15:25:55

标签: java android database 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。怎么做,或者有什么替代品我可以使用?

3 个答案:

答案 0 :(得分:15)

您无需单独删除行中的每个条目。以下方法应删除username字段等于传递的userName的行。 {@ 1}}字段和该行中的任何其他字段也将被删除。

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

答案 1 :(得分: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 );

答案 2 :(得分:0)

如果您的where子句包含不同类型的值,请尝试此操作。

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

    }

在您调用此方法的delete()方法中传递参数。

示例

favourite.delete(Courseid,Username,Password);

此处favourite是我们在activity()中创建的数据库对象,我们从中调用delete()函数