Зачем мне нужно соединение для создания PreparedStatements?
Поскольку операторы подготавливаются для каждого соединения в большинстве RDBMS
.
Подготовленные операторы на самом деле являются кэшированными планами выполнения, в которых не учитываются ваши разрешения, кодировки, параметры сопоставления и т. Д.
Все это делается при разборе запроса.
Есть ли способ сделать то, что я хочу, без использования String.format()
Не понимаю, зачем вам нужен String.format()
здесь.
Вы можете реализовать свой запрос как класс, создать соединение и подготовить запрос в конструкторе класса, а затем выполнить его в методе.
Параметризованный запрос обычно выглядит так:
SELECT *
FROM table
WHERE col1 = ?
AND col2 = ?
, где связанные параметры будут заменены на ?
во время выполнения запроса.
Если вы хотите static
метод:
- Создание дескриптора подключения
static
.
- Создайте
static
хэш-таблицу подготовленных запросов, используя параметризованный текст запроса в качестве key
и дескриптор подготовленного запроса в виде value
.
- Всякий раз, когда вы хотите выполнить запрос, найдите его дескриптор (или создайте его, если он не был найден) и используйте, чтобы связать параметры и выполнить запрос.