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

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

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

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

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:single_hit.db")) { try (Statement statement = connection.createStatement()) { 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')" ); } PreparedStatement query = connection.prepareStatement( "SELECT secret FROM tokens WHERE id = ?" ); query.setInt(1, 1); var result = query.executeQuery(); if (result.next()) { System.out.println(result.getString("secret")); } } } } }

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

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:single_hit.db")) { PreparedStatement query = connection.prepareStatement( "SELECT secret FROM tokens WHERE id = ?" ); query.setInt(1, 99); var result = query.executeQuery(); if (result.next()) { System.out.println(result.getString("secret")); } else { System.out.println("empty"); } } } } }

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

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

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