Создание строки SQL, как при заполнении имен таблиц и столбцов будет небезопасным (SQL инъекция), только если переменные строки происходят из некоторого переданного ввода.
Следовательно, StringBuilder
может быть даже более звучным (чистым), чем MessageFormat
. С другой стороны, формат более читабелен.
Поскольку именованные заполнители были бы еще лучше, рассмотрим Apache Общие StringSubstitutor
или что-то подобное.
В каждом случае средства проверки кода могут предупреждать о SQL внедрение в это.
Иногда вы можете использовать
DatabaseMetaData metaData = connection.getMetaData();
и использовать имена таблиц и столбцов для работы с метаданными.
Это в основном поставщик БД независимый способ JDB C для запроса базы данных.