我正在尝试创建一个简单的登录页面,只需输入用户名即可删除包含其详细信息的特定联系人。
换句话说,我想删除数据库中的特定行。
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。怎么做,或者有什么替代品我可以使用?
答案 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()
函数