0

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

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

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

4

2 回答 2

3

Exposed 中有一个VendorDialect.allTableNames()函数,它使用 jdbcDatabaseMetadata来获取表。

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

transaction { 
    val tableNames = TransactionManager.current().db.dialect.allTablesNames()
}
于 2019-03-24T16:18:46.107 回答
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)
    }
于 2019-03-24T11:25:05.160 回答