打印出 TableQuery[Restaurants] 中的所有数据
Print out all the data within a TableQuery[Restaurants]
def displayTable(table: TableQuery[Restaurants]): Unit = {
val tablequery = table.map(_.id)
val action = tablequery.result
val result = db.run(action)
result.foreach(id => id.foreach(new_id => println(new_id)))
total_points = total_points + 10
}
我试过将所有数据打印到屏幕上,但我没有成功。我的问题是为什么没有打印出来。我正在使用 Scala 和 JDBC connection aka Slick。如果你删除 new_id => println(new_id),你会得到:
def displayTable(table: TableQuery[Restaurants]): Unit = {
val tablequery = table.map(_.id)
val action = tablequery.result
val result = db.run(action)
result.foreach(id => println(id))
total_points = total_points + 10
}
此代码产生如下输出:“Vector()”。有人可以帮我打印出所有数据吗?我使用以下代码加载它:
def fillTable(): TableQuery[Restaurants] ={
println("Table filled.")
val restaurants = TableQuery[Restaurants]
val setup = DBIO.seq(
restaurants.schema.create
)
val setupFuture = db.run(setup)
val bufferedSource = io.Source.fromFile("src/main/scala/Restaurants.csv")
for (line <- bufferedSource.getLines) {
val cols = line.split(",").map(_.trim)
var restaurant = new Restaurant(s"${cols(0)}",s"${cols(1)}", s"${cols(2)}",
s"${cols(3)}", s"${cols(4)}",s"${cols(5)}",s"${cols(6)}",
s"${cols(7)}",s"${cols(8)}",s"${cols(9)}")
restaurants.forceInsert(s"${cols(0)}",s"${cols(1)}", s"${cols(2)}",
s"${cols(3)}", s"${cols(4)}",s"${cols(5)}",s"${cols(6)}",
s"${cols(7)}",s"${cols(8)}",s"${cols(9)}")
total_rows = total_rows + 1
这是我的第一个问题,所以我对格式表示歉意。
Vector()
是您在 displayTable
的第二个版本中的输出这一事实强烈暗示您的查询返回空结果,因此没有要打印的 ID。我自己没有 运行 你的代码,但我怀疑这是因为 restaurants.forceInsert
returns 一个动作,你需要 db.run()
它才能实际执行查询。
我也很好奇为什么你创建了 var restaurant = ...
但又忽略了它,并再次调用 forceInsert
从 csv 值重新创建元组。为什么不 restaurants.forceInsert(restaurant)
?
def displayTable(table: TableQuery[Restaurants]): Unit = {
val tablequery = table.map(_.id)
val action = tablequery.result
val result = db.run(action)
result.foreach(id => id.foreach(new_id => println(new_id)))
total_points = total_points + 10
}
我试过将所有数据打印到屏幕上,但我没有成功。我的问题是为什么没有打印出来。我正在使用 Scala 和 JDBC connection aka Slick。如果你删除 new_id => println(new_id),你会得到:
def displayTable(table: TableQuery[Restaurants]): Unit = {
val tablequery = table.map(_.id)
val action = tablequery.result
val result = db.run(action)
result.foreach(id => println(id))
total_points = total_points + 10
}
此代码产生如下输出:“Vector()”。有人可以帮我打印出所有数据吗?我使用以下代码加载它:
def fillTable(): TableQuery[Restaurants] ={
println("Table filled.")
val restaurants = TableQuery[Restaurants]
val setup = DBIO.seq(
restaurants.schema.create
)
val setupFuture = db.run(setup)
val bufferedSource = io.Source.fromFile("src/main/scala/Restaurants.csv")
for (line <- bufferedSource.getLines) {
val cols = line.split(",").map(_.trim)
var restaurant = new Restaurant(s"${cols(0)}",s"${cols(1)}", s"${cols(2)}",
s"${cols(3)}", s"${cols(4)}",s"${cols(5)}",s"${cols(6)}",
s"${cols(7)}",s"${cols(8)}",s"${cols(9)}")
restaurants.forceInsert(s"${cols(0)}",s"${cols(1)}", s"${cols(2)}",
s"${cols(3)}", s"${cols(4)}",s"${cols(5)}",s"${cols(6)}",
s"${cols(7)}",s"${cols(8)}",s"${cols(9)}")
total_rows = total_rows + 1
这是我的第一个问题,所以我对格式表示歉意。
Vector()
是您在 displayTable
的第二个版本中的输出这一事实强烈暗示您的查询返回空结果,因此没有要打印的 ID。我自己没有 运行 你的代码,但我怀疑这是因为 restaurants.forceInsert
returns 一个动作,你需要 db.run()
它才能实际执行查询。
我也很好奇为什么你创建了 var restaurant = ...
但又忽略了它,并再次调用 forceInsert
从 csv 值重新创建元组。为什么不 restaurants.forceInsert(restaurant)
?