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

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

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

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

import java.sql.DriverManager fun main() { DriverManager.getConnection("jdbc:sqlite:slots.db") .use { connection -> connection.createStatement().use { statement -> statement.execute( """ CREATE TABLE IF NOT EXISTS slots ( id INTEGER PRIMARY KEY, code TEXT NOT NULL, capacity INTEGER NOT NULL ) """ ) } val insert = connection.prepareStatement( "INSERT INTO slots (code, capacity) VALUES (?, ?)" ) insert.setString(1, "A1") insert.setInt(2, 12) println(insert.executeUpdate()) } }

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

import java.sql.DriverManager fun main() { DriverManager.getConnection("jdbc:sqlite:slots.db") .use { connection -> val 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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить