在 MySQL prepareStatement 中使用 Scala 选项列表或数组

Using Scala Option list or array in MySQL prepareStatement

我正在使用 Spray、Scala 和 MySQL 开发 REST web API。用户必须在 POST 请求中传递数组参数(以及其他参数)。这是一个可选参数。我已经成功地编写了 Scala 函数来获取这些参数,查询 MySQL 数据库并在 JSON 中向用户呈现适当的输出。

但是我被这个数组参数困住了。我在将 Scala Option[Array[String]](或列表)转换为 java.sql.array.

时遇到了一些问题

示例代码如下:

def xyz(a:Option[Array[String]], b:Option[Long]) {
        ------------
        ------------
          if (a == None && b == None) {
    val statement = conn.prepareStatement("select * from table")                                          
    var rs = statement.executeQuery()
    while (rs.next) {
      -------
    }
  }
  else if (a != None && b == None) {
    val statement = conn.prepareStatement("select * from MasterInventory 
                    where ID = (?)")    
      var arr = conn.createArrayof("varchar",a)
      statement.setArray(1,arr)
      ------------
      ------------
}

createArrayof 需要一个 Java 数组,而不是您当前拥有的 Scala 数组。要转换它,您只需调用 toArray。 因为你知道 a 不为空,你可以直接调用 get 来获取你的 scala 数组

var arr = conn.createArrayof("varchar", a.get.toArray)