Предпочтительный способ обновления базы данных 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) ИМХО, у него более высокая читаемость.

Другие вопросы по тегам