【发布时间】:2014-08-15 03:36:53
【问题描述】:
在 Slick 中使用 Plain SQL Query 我想做一个查询并返回行数,我不关心数据。
我应该使用 updateNA 吗?在 StaticQuery 上调用 execute 不会返回任何内容。我如何获得行数?
【问题讨论】:
在 Slick 中使用 Plain SQL Query 我想做一个查询并返回行数,我不关心数据。
我应该使用 updateNA 吗?在 StaticQuery 上调用 execute 不会返回任何内容。我如何获得行数?
【问题讨论】:
您需要改为致电.first 或.execute。 http://slick.typesafe.com/doc/2.0.2/api/index.html#scala.slick.jdbc.StaticQuery0
如果你有一个正常的选择(而不是删除或更新),你需要按照 Dan 的建议询问行数。
【讨论】:
最简单的方法是修改您正在执行的 SQL 查询以返回行数,方法是用SELECT COUNT(*) FROM (...) 将其括起来。如果您有原始 SQL 字符串可以使用,这是最简单的,但如果您有 StaticQuery 对象,也可以这样做:
def getRowCount[P](q: StaticQuery[P, _], params: P = ())
(implicit pconv: SetParameter[P], rconv: GetResult[Int]): Int = {
val q2 = StaticQuery.query[P, Int](
"SELECT COUNT(*) FROM (" + q(params).getStatement + ")")
q2(params).first
}
【讨论】: