kotlin - 使用 Kotlin Exposed 创建数据库后连接到数据库

标签 kotlin jdbc kotlin-exposed

我正在使用jetbrains' exposed库来创建和填充数据库。

数据库不存在,我正在创建它。但是我找不到一种简单的方法来连接到 SQL 引擎、创建数据库并在没有多个连接的情况下连接到该数据库。 这听起来有点笨拙。也许有更好的方法吗?

这是一个小例子:


var db = Database.connect("jdbc:mysql://localhost:3308", driver = "com.mysql.jdbc.Driver", user = "root", password = "aRootPassword")

transaction(db) { SchemaUtils.createDatabase("imdb") }

// avoid reconnect?
db = Database.connect("jdbc:mysql://localhost:3308/imdb", driver = "com.mysql.jdbc.Driver", user = "root", password = "aRootPassword")

transaction(db) { SchemaUtils.create (TitleRatings) }

最佳答案

您需要一个连接池,例如HikariCP 。它汇集数据库连接并重用它们。与单独打开的连接相比,这会给您带来巨大的性能提升。

我通常将它包装在一个简单的类中,如下所示:

import com.zaxxer.hikari.HikariConfig
import com.zaxxer.hikari.HikariDataSource
import javax.sql.DataSource

public object DB {

    var db: DataSource = connect();

    public fun connect(): DataSource {
        val config = HikariConfig()
        config.jdbcUrl = "jdbc:mysql://localhost:3308"
        config.username = "com.mysql.jdbc.Driver"
        config.password = "aRootPassword"
        config.driverClassName = "com.mysql.jdbc.Driver"

        return HikariDataSource(config)

    }
}

我的交易如下所示:

transaction(Database.connect(DB.db)) {
   SchemaUtils.createDatabase("imdb")
}

关于kotlin - 使用 Kotlin Exposed 创建数据库后连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60580518/

相关文章:

kotlin - 无法引用伴随对象方法

json - 暴露: How to parse JSON into an Entity class

kotlin - TestContainers 和 Mysql : Access denied for user '' @'172.17.0.1' (using password: NO)

java - 清理重复设置和清理 Java(JDBC) 代码

java.sql.SQLException : Invalid state, ResultSet对象被关闭

asynchronous - 我可以将 Ktor 与 Exposed 混合使用吗?

Android Volley Kotlin : (Mutable)Map<(raw) Any?,(原始)有吗?>!与 MutableMap<String, String>

MVVM kotlin 在不使用 Intents 和 SharedPreferences 的情况下在事件之间共享数据

Kotlin:为什么编译器需要 `const` 修饰符?

java - Hibernate 中 JTA、JPA 和普通 JDBC 的区别