第一次尝试 Kotlin Exposed。我现在已经能够在合理的范围内学习 Kotlin,现在我正在尝试学习 Kotlin Exposed API 以进行数据库访问。但我找不到SHOW tables;
MySQL 的等价物。
如果能够列出表格而无需事先将它们硬编码到程序中,那就太好了。
Exposed中是否有与该查询等效的查询?如果是这样怎么办?提前致谢
第一次尝试 Kotlin Exposed。我现在已经能够在合理的范围内学习 Kotlin,现在我正在尝试学习 Kotlin Exposed API 以进行数据库访问。但我找不到SHOW tables;
MySQL 的等价物。
如果能够列出表格而无需事先将它们硬编码到程序中,那就太好了。
Exposed中是否有与该查询等效的查询?如果是这样怎么办?提前致谢
Exposed 中有一个VendorDialect.allTableNames()
函数,它使用 jdbcDatabaseMetadata
来获取表。
Database.connect(/* your connection string */)
transaction {
val tableNames = TransactionManager.current().db.dialect.allTablesNames()
}
到目前为止,从我在文档和源代码中看到的内容来看,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)
}