Да, всегда рекомендуется использовать bindString()
, чтобы избежать возможных атак на вашу базу данных через SQL-инъекцию.В вашем конкретном случае, если вы жестко программируете оператор вставки только в своем коде и если значения, которые вы передали через него, получены из любого статического источника, это означает, что значения передаются только из вашего кода, а не из какого-либо динамического входного источника, тогда онможет быть безопасно использовать любой из методов, упомянутых в вашем вопросе.
В вашем случае вы также можете использовать insert()
из SQLiteDatabase
класса, который безопасен для любой синтаксической ошибки:
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("articleId", articleId);
values.put("title", articleTitle);
values.put("content", articleContent);
db.insert("articles", null, values);
Возвращает идентификатор строки вновь вставленной строки или -1, если произошла ошибка.
Однако, если вы берете значения из пользовательского ввода, то простое использование конкатенации строк делает вашу базу данных полностьюуязвимы для потенциальных злоумышленников.Вот почему всегда рекомендуется использовать bindString()
метод класса SQLiteProgram
, который расширен классом SQLiteStatement
для выполнения sql, где нам нужно передать значения.
Другая причина в том, что bindString()
может вызыватьjava.lang.IllegalArgumentException
.Таким образом, использование этого метода может быть полезным для целей отладки в случае возникновения любой синтаксической ошибки.