У меня есть таблица с заголовками столбцов: | _id (долго) | Имя (Строка) | x (целое число) | y (целое число) |
Я хочу удалить строку в таблице, которая имеет Имя myName.
// In onCreate
dbHelper = new DBAdapter(this);
dbHelper.open()
// Function in DBAdapter class
public boolean deleteTitleGivenName(String myName)
{
return dbHelper.delete(DATABASE_TABLE_2, KEY_NAME + "=" + myName, null) > 0;
}
// Function call in java code
dbHelper.deleteTitleGivenName(myName); // this is where my code fails
dbHelper.close();
Так же, как примечание: myName находится наверняка в базе данных. Кроме того, я не могу использовать ROWID, так как я получаю myName от ListView.
Я только что начал программировать с Android, и я пытался в течение многих дней решить эту проблему. Мой оператор Where корректен (KEY_NAME + "=" + myName)?
Заранее спасибо.
Конечно, это работает, хотя я бы порекомендовал
dbHelper.delete(DATABASE_TABLE_2, KEY_NAME + "=?", new String[] { myName })
из соображений безопасности. Таким образом, вы можете использовать специальные символы, не нарушая ваш запрос. Разве это не сработало?
Попробуйте заключить значение предложения where в кавычки ...
KEY_NAME + "='" + myName + "'"
Кроме того, использование предложения WHERE на основе строк (как правило) является плохой практикой. Это потому, что если в моем имени есть апостроф, ваше приложение не будет работать. Вероятно, вам стоит поискать альтернативный способ удаления записей из базы данных на Android.