首次尝试Kotlin Exposed。我现在已经能够在一定程度上学习Kotlin了,现在我正在尝试学习Kotlin Exposed API来进行数据库访问。但是我找不到MySQL的SHOW tables;
的等效项。
能够列出表而无需事先将它们硬编码到程序中,这将是很好的。
在Exposed中有与该查询等效的内容吗?如果是这样怎么办?预先感谢
答案 0 :(得分:2)
Exposed中有VendorDialect.allTableNames()
函数,该函数使用jdbc DatabaseMetadata
来获取表。
Database.connect() // your connection string
transaction {
val tableNames = TransactionManager.current().db.dialect.allTableNames()
}
答案 1 :(得分:1)
根据我到目前为止在文档和源代码中所看到的,SchemaUtils类中的fetchAllTables方法是私有的,因此最好的选择是执行MySQL查询。下面的代码可以满足您的要求:
val connect = Database.Companion.connect(dataSource())
val tableNames = mutableListOf<String>()
transaction {
val conn = TransactionManager.current().connection
val statement = conn.createStatement()
val query = "show tables"
statement.execute(query)
val results = statement.resultSet
while (results.next()) {
tableNames.add(results.getString(1))
}
}
tableNames.forEach {
println(it)
}