【问题标题】:How can i execute the sql query with parameter?如何使用参数执行 sql 查询?
【发布时间】:2016-12-06 13:10:08
【问题描述】:
val resultList: List[List[String]] =
  sql"""
       select * from exchange_transaction
     """
    .map(
      rs =>
        List(
          rs.string("transaction_id")
        )
    )
    .list()
    .apply()

执行上面的代码,就ok了 但是这个 sql "select * from exchange_transaction" 不是固定的。 我想要这个 sql 像一个参数,就像下面(速记代码.....)

def findMemberList(segmentExecuteSql: String
    val resultList: List[List[String]] =
      sql"""
           $segmentExecuteSql
         """
        .map(
          rs =>
            List(
              rs.string("transaction_id")
            )
        )
        .list()
        .apply()

但执行后报错 消息是

[error] s.StatementExecutor$$anon$1 - SQL execution failed (Reason: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''select * from  exchange_transaction'' at line 1
Query is : 
           'select * from  exchange_transaction'
         ):

   'select * from  exchange_transaction'

我该怎么办,如何修复异常?

【问题讨论】:

标签: mysql scala playframework scalikejdbc


【解决方案1】:

你可以试试把resultList变成一个函数:

import scalikejdbc.SQL

def resultList(sqlQuery: String): List[List[String]] =
  SQL(sqlQuery)
    .map(
      rs =>
        List(
          rs.string("transaction_id")
        )
    )
    .list()
    .apply()

【讨论】:

  • 未找到 DBIO[_]
  • 还有什么方法吗?
  • 您使用的是什么数据库库?我以为它来自 Slick。另外这个问题和play框架没有任何关系,所以请更新标签。
  • mysql-----------------------------
  • 这是您正在使用的数据库,与您的问题无关。您使用的库可能是 Slick、Anorm、scalikejdbc 等。
【解决方案2】:
val resultList: List[List[String]] =
  SQL(segmentExecuteSql)
    .map(
      rs =>
        List(
          rs.string("transaction_id")
        )
    )
    .list()
    .apply()

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
  • 感谢您的评论,我的帐户已被封禁。您知道如何摆脱问题封禁吗?
猜你喜欢
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多