Kotlin Exposed 中来自 MySQL 的显示表的等效项是什么

What would be the eqivalent of show tables from MySQL in Kotlin Exposed

第一次尝试 Kotlin Exposed。我现在已经能够在一定程度上学习 Kotlin,现在我正在尝试学习 Kotlin Exposed API 以进行数据库访问。但是我找不到 MySQL 的 SHOW tables; 的等价物。

如果能够列出表格而无需事先将它们硬编码到程序中,那就太好了。

Exposed 中是否有与该查询等效的查询?如果是这样怎么办?提前致谢

根据我目前在文档和源代码中看到的内容,SchemaUtils class 中的 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)
    }

Exposed 中有 VendorDialect.allTableNames() 函数,它使用 jdbc DatabaseMetadata 来获取表。

Database.connect(/* your connection string */)

transaction { 
    val tableNames = TransactionManager.current().db.dialect.allTablesNames()
}