使用 Slick 和 Scala 将表添加到 SQLite 数据库

Adding tables to SQLite database using Slick and Scala

所以我有一个使用 Slick 的 SQLite 数据库,我想在其中添加和删除 tables。 这是我现在拥有的:

这是数据库元素 class:

class Data(tag: Tag)
  extends Table[(Int, String)](tag, "myDB") {
  // This is the primary key column:
  def id = column[Int]("ID", O.PrimaryKey)
  def name = column[String]("NAME")
  // Every table needs a * projection with the same type as the table's type parameter
  def * : ProvenShape[(Int, String)] = (id, name)
}

我需要能够使用上面的 class 创建多个 table。像这样:

def addTable(name:String){
  db withSession { implicit session =>
    val newTable = TableQuery[Data]
    newTable.ddl.create
  }
}

问题是我无法创建新的 table,因为名称 "myDB" 已经存在。我试图在 class 数据中为 Table 的名称添加一个参数,如下所示:

class Data(tag: Tag,tableName:String)

但是后来我根本无法创建 table 并且出现错误

unspecified value parameter tableName

以及如何从数据库中查询特定 table 名称的 table? 我尝试使用 table 名称指向 table 的地图来实现此功能,但它不起作用,因为地图未保存在任何地方,并且每次程序启动时都会重置。

这是我查询 table:

def getDataFromTable(tableName:String)
{
  var res = ""
  db withSession { implicit session =>
    tables(tableName) foreach{
      case (id,name)=>
        res += id + " " + name + " "
    }
  }
  res
}

感谢任何帮助!

谢谢!

定义

class Data(tag: Tag, tableName: String)
  extends Table[(Int, String)](tag, tableName){

...

用法

(new TableQuery(Data(_,"table_1"))).ddl.create
(new TableQuery(Data(_,"table_2"))).ddl.create
...