KOTLIN · 파일/IO
데이터베이스 연결 (JDBC)
Kotlin에서 JDBC를 활용하여 데이터베이스에 연결하고 쿼리를 수행합니다. use로 리소스를 안전하게 관리합니다.
파일/IO중급jdbcdatabasesqlprepared-statement
핵심 설명
Kotlin에서 JDBC를 활용하여 데이터베이스에 연결하고 쿼리를 수행합니다. use로 리소스를 안전하게 관리합니다.
Kotlin code
import java.sql.DriverManager
import java.sql.ResultSet
data class Product(val id: Int, val name: String, val price: Int)
fun <T> ResultSet.toList(mapper: (ResultSet) -> T): List<T> = buildList {
while (next()) { add(mapper(this@toList)) }
}
fun main() {
// H2 인메모리 DB 예시
val url = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"
DriverManager.getConnection(url).use { conn ->
// 테이블 생성
conn.createStatement().use { stmt ->
stmt.execute("""
CREATE TABLE products (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
price INT
)
""".trimIndent())
}
// 데이터 삽입 (PreparedStatement)
conn.prepareStatement("INSERT INTO products (name, price) VALUES (?, ?)").use { ps ->
listOf("노트북" to 1500000, "마우스" to 30000, "키보드" to 80000).forEach { (name, price) ->
ps.setString(1, name)
ps.setInt(2, price)
ps.executeUpdate()
}
}
// 조회
conn.prepareStatement("SELECT * FROM products WHERE price > ?").use { ps ->
ps.setInt(1, 50000)
ps.executeQuery().use { rs ->
val products = rs.toList { Product(it.getInt("id"), it.getString("name"), it.getInt("price")) }
products.forEach { println(it) }
}
}
}
}학습 팁
PreparedStatement를 사용하면 SQL 인젝션을 방지하고 쿼리 성능도 향상됩니다. 문자열 연결로 쿼리를 만들지 마세요.
주의할 점
Connection, Statement, ResultSet을 닫지 않으면 커넥션 풀이 고갈됩니다. 항상 use 블록을 사용하세요.
자주 묻는 질문
데이터베이스 연결 (JDBC)란 무엇인가요?
Kotlin에서 JDBC를 활용하여 데이터베이스에 연결하고 쿼리를 수행합니다. use 로 리소스를 안전하게 관리합니다.
데이터베이스 연결 (JDBC) 학습 시 주의할 점은 무엇인가요?
Connection , Statement , ResultSet 을 닫지 않으면 커넥션 풀이 고갈됩니다. 항상 use 블록을 사용하세요.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.