Kotlin

JDBC with use { } — Auto-Close Connections

admin by @admin ADMIN
Jun 16, 2026
Jun 1, 2026
Public
0 0 up · 0 down Sign in to vote
Plain JDBC is fine for simple cases. Wrap connections / statements / result sets in `use { }` for guaranteed cleanup even on exceptions.
Kotlin
Raw
import java.sql.*

fun fetchUsers(dbUrl: String, user: String, pass: String): List<Pair<Int, String>> {
    val users = mutableListOf<Pair<Int, String>>()
    DriverManager.getConnection(dbUrl, user, pass).use { conn ->
        conn.prepareStatement("SELECT id, name FROM users WHERE active = ?").use { ps ->
            ps.setBoolean(1, true)
            ps.executeQuery().use { rs ->
                while (rs.next()) {
                    users += rs.getInt("id") to rs.getString("name")
                }
            }
        }
    }
    return users
}

fun insertUser(conn: Connection, name: String, email: String): Int =
    conn.prepareStatement(
        "INSERT INTO users (name, email) VALUES (?, ?)",
        Statement.RETURN_GENERATED_KEYS
    ).use { ps ->
        ps.setString(1, name)
        ps.setString(2, email)
        ps.executeUpdate()
        ps.generatedKeys.use { keys -> if (keys.next()) keys.getInt(1) else 0 }
    }
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.