表格的光滑打印列表

Slick print list of tables

我想打印通过 JDBC 连接的数据库中的表格列表,但不知道如何执行此操作。我试过使用 MTable.getTablesdefaultTables,谢谢

import slick.driver.H2Driver.api._
import scala.concurrent._
import com.typesafe.config.{ ConfigFactory, Config }

object SlickTest {

  def main(args: Array[String]): Unit = {

    """
      |mydb = {
      |  driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
      |  slickDriver = com.typesafe.slick.driver.ms.SQLServerDriver
      |  url="jdbc:sqlserver://#############"
      |  properties = {
      |    databaseName = "######"
      |    user = "#######"
      |    password = "########"
      |  }
      |  numThreads = 10
      |}
    """.stripMargin


    val db = Database.forConfig("mydb")


    ???

  }

}

有很多不同的方法可以做到这一点,但按照您在问题中的代码布局,这适用于 Slick 3.1(并使用 freeslick 配置文件,因为我没有 slick 扩展 SQLServer库).

import com.typesafe.config.ConfigFactory
import slick.backend.DatabaseConfig
import slick.driver.JdbcProfile
import scala.concurrent.duration.Duration
import scala.concurrent.{Await, ExecutionContext}


object SlickTest {

  def main(args: Array[String]): Unit = {
    val config = """
    |mydb = {
    |
    |  driver = "freeslick.MSJDBCSQLServerProfile$"
    |  db {
    |    driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
    |    url="jdbc:sqlserver://localhost:2008"
    |    properties = {
    |      databaseName = "freeslicktest"
    |      user = "sa"
    |      password = "FreeSlick"
    |    }
    |  }
    |}
    """.stripMargin
    val dbConfig = DatabaseConfig.forConfig[JdbcProfile]("mydb", ConfigFactory.parseString(config))
    import ExecutionContext.Implicits.global
    Await.result(dbConfig.db.run(dbConfig.driver.defaultTables), Duration.Inf).foreach(println)
  }
}

为其中有一个名为 USERS 的 table 的数据库生成此结果。

*** (c.z.hikari.HikariDataSource) HikariCP pool mydb.db is starting.
MTable(MQName(freeslicktest.dbo.USERS),TABLE,null,None,None,None)

Process finished with exit code 0