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()
}
第一次尝试 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()
}