在使用Kotlin创建数据库后连接到该数据库

在使用Kotlin创建数据库后连接到该数据库,kotlin,jdbc,kotlin-exposed,Kotlin,Jdbc,Kotlin Exposed,我正在使用库创建和填充数据库 数据库不存在,我正在创建它。但是,我找不到一种简单的方法来连接SQL引擎、创建数据库并在没有多个连接的情况下连接到该数据库。 听起来有点笨重。也许有更好的方法吗 下面是一个小例子: var db = Database.connect("jdbc:mysql://localhost:3308", driver = "com.mysql.jdbc.Driver", user = "root", password = "aRootPassword") transact

我正在使用库创建和填充数据库

数据库不存在,我正在创建它。但是,我找不到一种简单的方法来连接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) }

您需要一个连接池,例如。它汇集数据库连接并重用它们。与单独打开的连接相比,这将大大提高性能

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

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")
}