4

我正在尝试做一个简单的登录页面,只需输入用户名,我就可以删除特定联系人及其详细信息。

换句话说,我想删除数据库中的特定行。

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

这意味着我必须在编辑视图中输入用户名和密码才能删除该特定用户。我发现一些消息来源告诉我使用这样的东西,但我试过了,但它不起作用。有什么错误吗?

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

我想通过获取用户名来删除数据库中的特定行。我输入要删除的行的 id。如何做到这一点,或者我可以使用任何替代方案?

4

3 回答 3

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);
于 2013-02-22T15:32:35.390 回答
3

您可以使用简单的 SQL 查询来删除特定行 Acc to sql

DELETE FROM table_name WHERE some_column=some_value; 所以用

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

如果你有不止一个where条件,那么你可以使用ANDlike

db.execSQL("delete from  " + TABLENAME +
            " where specific_row_to_delete=\'" + user_name +
            "\' and condition_to_delete  >= " + condtion_argument );
于 2015-02-19T05:42:50.313 回答
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();
    }

或者

 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()函数

于 2016-11-24T05:50:00.827 回答