Выбор части столбцов в SQLite
Звёздочка * в SELECT тянет все колонки.
Чаще перечисляют явный список - так меньше данных
и проще читать результат.
Таблица может хранить служебные поля, которые в отчёт не попадают. В запросе оставляют только нужные имена:
import java.sql.DriverManager
fun main() {
DriverManager.getConnection("jdbc:sqlite:partial_view.db")
.use { connection ->
connection.createStatement().use { statement ->
statement.execute(
"""
CREATE TABLE IF NOT EXISTS devices (
id INTEGER PRIMARY KEY,
serial TEXT NOT NULL,
note TEXT,
warranty_until TEXT
)
"""
)
statement.executeUpdate(
"""
INSERT INTO devices (serial, note, warranty_until)
VALUES ('SN-44', 'lab unit', '2027-01-01')
"""
)
val result = statement.executeQuery(
"SELECT serial, warranty_until FROM devices"
)
while (result.next()) {
println(result.getString("serial"))
println(result.getString("warranty_until"))
}
}
}
}
Порядок имён в списке задаёт порядок столбцов в
ResultSet. Можно читать по индексу, но
имена надёжнее при изменении запроса:
import java.sql.DriverManager
fun main() {
DriverManager.getConnection("jdbc:sqlite:partial_view.db")
.use { connection ->
val query = connection.prepareStatement(
"SELECT note FROM devices WHERE serial = ?"
)
query.setString(1, "SN-44")
val result = query.executeQuery()
if (result.next()) {
println(result.getString("note"))
}
}
}
Создайте таблицу lots в batch.db
с полями code, qty и comment,
добавьте партию и выведите только code
и qty.
Выведите comment для партии с кодом
"B-12", не выбирая остальные столбцы.