Предпочтительный способ обновления базы данных sqlite в Android
Какой способ использовать db.update быстрее и лучше в Android? то есть: построить всю строку условия where вместе со значениями переменных условия claus ИЛИ использовать 4-й параметр для обновления, передав значения переменных переменной clause в виде массива строк?
Защищает ли передача значений переменных условия условия в виде нового массива строк от атак SQL-инъекций?
public boolean UpdateChannelSortKey(Channel c)
{
ContentValues cv = new ContentValues();
cv.put("SortKey", c.SortKey);
return this.db.update("Channels", cv, "ChannelID = ?", new String[]{String.valueOf(c.ChannelID)}) > 0;
}
ИЛИ ЖЕ
public boolean UpdateChannelSortKey(Channel c)
{
ContentValues cv = new ContentValues();
cv.put("SortKey", c.SortKey);
return this.db.update("Channels", cv, "ChannelID = " + c.ChannelID, null) > 0;
}
1 ответ
Решение
Первый способ предпочтительнее, потому что:
1) Да, он защищает от SQL-инъекций.
2) Лучше всегда использовать подготовленные высказывания - не только в Android, так что вы получите хорошую привычку.
3) ИМХО, у него более высокая читаемость.