Удалите строку в таблице базы данных, учитывая одно значение столбца - который является строкой

У меня есть таблица с заголовками столбцов: | _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)?

Заранее спасибо.

17
задан Yasir Malang 22 July 2010 в 22:57
поделиться

2 ответа

Конечно, это работает, хотя я бы порекомендовал

dbHelper.delete(DATABASE_TABLE_2, KEY_NAME + "=?", new String[] { myName })

из соображений безопасности. Таким образом, вы можете использовать специальные символы, не нарушая ваш запрос. Разве это не сработало?

38
ответ дан 30 November 2019 в 11:32
поделиться

Попробуйте заключить значение предложения where в кавычки ...

KEY_NAME + "='" + myName + "'"

Кроме того, использование предложения WHERE на основе строк (как правило) является плохой практикой. Это потому, что если в моем имени есть апостроф, ваше приложение не будет работать. Вероятно, вам стоит поискать альтернативный способ удаления записей из базы данных на Android.

1
ответ дан 30 November 2019 в 11:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: