使用 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
...
所以我有一个使用 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
...