Каким будет эквивалент выставочных таблиц из MySQL в Kotlin Exposed - PullRequest
0 голосов
/ 24 марта 2019

Попытка Kotlin Exposed в первый раз. Теперь я смог в достаточной степени изучить Kotlin, и теперь я пытаюсь изучить API Kotlin Exposed для доступа к базе данных. Но я не могу найти эквивалент для SHOW tables; MySQL.

Было бы неплохо иметь возможность перечислять таблицы без предварительного жесткого кодирования их в программу.

Есть ли эквивалент этого запроса в Exposed? если так как? Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 24 марта 2019

В Exposed есть функция VendorDialect.allTableNames(), которая использует jdbc DatabaseMetadata для извлечения таблиц.

Database.connect() // your connection string

transaction { 
    val tableNames = TransactionManager.current().db.dialect.allTableNames()
}
1 голос
/ 24 марта 2019

Из того, что я видел в документации и исходном коде, метод fetchAllTables в классе SchemaUtils является закрытым, поэтому лучшим вариантом будет выполнение запроса 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)
    }
...