Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpDbPar 257 of 322 menu
◀ ▶

Параметры SQL-запроса в Java

Склеивать пользовательский текст в SQL небезопасно. Объект PreparedStatement держит шаблон с местами "?", куда позже кладут значения типизированными методами setString, setInt и другими.

Шаблон готовят один раз на соединении, затем заполняют параметры по номеру, начиная с 1:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.Statement; public class Main { public static void main(String[] args) throws Exception { try (Connection connection = DriverManager.getConnection("jdbc:sqlite:slots.db")) { try (Statement statement = connection.createStatement()) { statement.execute(""" CREATE TABLE IF NOT EXISTS slots ( id INTEGER PRIMARY KEY, code TEXT NOT NULL, capacity INTEGER NOT NULL ) """); } PreparedStatement insert = connection.prepareStatement( "INSERT INTO slots (code, capacity) VALUES (?, ?)" ); insert.setString(1, "A1"); insert.setInt(2, 12); System.out.println(insert.executeUpdate()); } } } }

Тот же шаблон можно выполнить с другими аргументами: достаточно снова вызвать set... и executeUpdate или executeQuery:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.Statement; public class Main { public static void main(String[] args) throws Exception { try (Connection connection = DriverManager.getConnection("jdbc:sqlite:slots.db")) { PreparedStatement insert = connection.prepareStatement( "INSERT INTO slots (code, capacity) VALUES (?, ?)" ); insert.setString(1, "B2"); insert.setInt(2, 8); insert.executeUpdate(); insert.setString(1, "C3"); insert.setInt(2, 20); insert.executeUpdate(); } } } }

Создайте таблицу crates в dock.db и добавьте строку с меткой "K9" и весом 15.

Добавьте ещё одну строку с меткой "L1" и весом 22 тем же шаблоном без пересборки SQL-текста.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить