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

Пустое значение поля SQL

Значение NULL в SQL означает отсутствие данных, а не пустую строку. Колонку без NOT NULL можно оставить незаполненной при INSERT.

Метод getString после SQL NULL даёт Kotlin null. Дополнительно проверяют wasNull сразу после чтения:

import java.sql.DriverManager fun main() { DriverManager.getConnection("jdbc:sqlite:nulls.db") .use { connection -> connection.createStatement().use { statement -> statement.execute( """ CREATE TABLE IF NOT EXISTS memos ( id INTEGER PRIMARY KEY, title TEXT NOT NULL, remark TEXT ) """ ) statement.executeUpdate( "INSERT INTO memos (title) VALUES ('idea')" ) val result = statement.executeQuery( "SELECT remark FROM memos WHERE id = 1" ) if (result.next()) { val text = result.getString("remark") if (result.wasNull()) { println("missing") } else { println(text) } } } } }

Тот же столбец можно прочитать через нуллабельный результат getString без отдельной ветки, если дальше работают только с Kotlin null:

import java.sql.DriverManager fun main() { DriverManager.getConnection("jdbc:sqlite:nulls.db") .use { connection -> val insert = connection.prepareStatement( "INSERT INTO memos (title, remark) VALUES (?, ?)" ) insert.setString(1, "done") insert.setString(2, "shipped") insert.executeUpdate() val query = connection.prepareStatement( "SELECT remark FROM memos WHERE title = ?" ) query.setString(1, "idea") val result = query.executeQuery() if (result.next()) { val remark: String? = result.getString("remark") println(remark ?: "none") } } }

Создайте таблицу items в stock.db с обязательным sku и необязательным comment, добавьте строку без комментария и выведите "empty", если поле пустое.

Добавьте строку с комментарием "fragile" и выведите текст для обеих записей через оператор Elvis.

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