使用 Kotlin Exposed 创建数据库后连接到数据库
Posted
技术标签:
【中文标题】使用 Kotlin Exposed 创建数据库后连接到数据库【英文标题】:Connecting to a database after creating it with Kotlin Exposed 【发布时间】:2020-06-20 03:50:50 【问题描述】:我正在使用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)
【问题讨论】:
【参考方案1】:您需要一个连接池,例如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 Exposed 创建数据库后连接到数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Exposed 连接到 Google Cloud SQL