Итак, у меня есть база данных SQLite, использующая Slick, и я хочу добавлять и удалять из нее таблицы. Вот что у меня есть сейчас:
Вот класс элемента базы данных:
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)
}
Мне нужно иметь возможность создавать несколько таблиц, используя класс выше. Что-то вроде этого:
def addTable(name:String){
db withSession { implicit session =>
val newTable = TableQuery[Data]
newTable.ddl.create
}
}
Проблема в том, что я не могу создать новую таблицу, потому что она уже существует с именем «myDB». Я попытался добавить параметр для имени таблицы в данные класса следующим образом:
class Data(tag: Tag,tableName:String)
Но тогда я вообще не смог создать таблицу и получил ошибку
unspecified value parameter tableName
И как я могу запросить конкретную таблицу из базы данных по имени таблицы? Я попытался реализовать это, используя карту с именем таблицы, указывающим на таблицу, но это не работает, потому что карта нигде не сохраняется и сбрасывается каждый раз при запуске программы.
Это то, что у меня было для запроса таблицы:
def getDataFromTable(tableName:String)
{
var res = ""
db withSession { implicit session =>
tables(tableName) foreach{
case (id,name)=>
res += id + " " + name + " "
}
}
res
}
Любая помощь приветствуется!
Спасибо!