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

Одна строка результата выборки

Не каждый SELECT возвращает много строк. Иногда нужна одна запись или проверка, что совпадений нет. Курсор всё равно двигают через next.

Если next вернул true, текущая строка единственная в простом сценарии с уникальным ключом:

import java.sql.DriverManager fun main() { DriverManager.getConnection("jdbc:sqlite:single_hit.db") .use { connection -> connection.createStatement().use { statement -> statement.execute( """ CREATE TABLE IF NOT EXISTS tokens ( id INTEGER PRIMARY KEY, secret TEXT NOT NULL ) """ ) statement.executeUpdate( "INSERT INTO tokens (secret) VALUES ('x-ray')" ) } val query = connection.prepareStatement( "SELECT secret FROM tokens WHERE id = ?" ) query.setInt(1, 1) val result = query.executeQuery() if (result.next()) { println(result.getString("secret")) } } }

Когда условие никому не подошло, первый же next даёт false. Это нормальный пустой результат, а не ошибка протокола:

import java.sql.DriverManager fun main() { DriverManager.getConnection("jdbc:sqlite:single_hit.db") .use { connection -> val query = connection.prepareStatement( "SELECT secret FROM tokens WHERE id = ?" ) query.setInt(1, 99) val result = query.executeQuery() if (result.next()) { println(result.getString("secret")) } else { println("empty") } } }

Создайте таблицу passes в gate.db, вставьте пропуск "vip-1" и выведите его, если выборка по id 1 нашла строку.

Запросите id 100 и выведите "none", когда next не нашёл запись.

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