В отношении комментария: -
не слишком уверен в подготовленных утверждениях, но не прочь узнать о них в этом контексте, если вы хотите дать код для одного
Вот прямая адаптация вашего кода, которая переключается с использования методов rawQuery
и execSQL
на удобные методы query
и delete
, которые готовят операторы.
Код такжеустраняет проблему, которая, возможно, смущает вас или даже является реальной проблемой, когда вам нужно использовать метод toString
(как вы это делали ранее) для получения данных в EditTexts.
String whereclause = "fname =? AND lname + =?"; //<<<< Where statement with ?'s for arguments
String[] whereargs = new String[]{
fname.getText().toString(), // First arg for first ?
lname.getText().toString() // Second arg for second ?
};
Cursor c = db.query(
"customer", //<<<< table name
null, //<<<< equates to * (all columns)
whereclause, //<<<< the WHERE clause (less WHERE keyword)
whereargs, //<<<< the argumnets to replace the ?'s (will be escaped/enclosed in quotes for you)
null,
null,
null
);
//<<<<< REPLACED Cursor c = db.rawQuery("SELECT * FROM customer WHERE fname='" + fname.getText() + "' AND lname='" + lname.getText() + "''", null);
if (c.moveToFirst()) {
db.delete(
"customer",
whereclause,
whereargs
);
//<<<<< REPLACED db.execSQL("DELETE FROM customer WHERE fname='" + fname.getText() + "' AND lname='" + lname.getText() + "''");
showMessage("Success", "Record Deleted");
} else {
showMessage("Error", "Invalid First and Last Name");
}
Примечания:-
- Для получения содержимого EditText следует использовать метод
toString
.
Дополнительно
Однако для удобства delete
методвозвращает количество строк, которые были удалены, так как int, запрос для проверки на существование является излишним, поэтому вышеприведенное можно упростить до: -
String whereclause = "fname =? AND lname + =?"; //<<<< Where statement with ?'s for arguments
String[] whereargs = new String[]{
fname.getText().toString(), // First arg for first ?
lname.getText().toString() // Second arg for second ?
};
if (db.delete(
"customer",
whereclause,
whereargs) > 0) {
showMessage("Success", "Record Deleted");
} else {
showMessage("Error", "Invalid First and Last Name");
}
Вы можете рассмотреть возможность просмотраследующее длядополнительная информация: -