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 連接,也就是 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
這是我的第一個問題,所以我為格式道歉。
uj5u.com熱心網友回復:
Vector()您在第二個版本中的輸出這一事實displayTable強烈暗示您的查詢回傳一個空結果,因此沒有要列印的 id。我自己沒有運行你的代碼,但我懷疑這是因為restaurants.forceInsert回傳一個動作,你需要db.run()它來實際執行查詢。
我也很好奇你為什么創建var restaurant = ...然后忽略它,并再次呼叫forceInsert從 csv 值重新創建元組。為什么不restaurants.forceInsert(restaurant)呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/453081.html
上一篇:如何在sparkscala中按順序應用一組函式,其中當前的輸入是前一個的輸出?
下一篇:如何在Scala中創建回圈參考?
