Passing array parameter in prepare statement - getting “java.sql.SQLFeatureNotSupportedException”

后端 未结 3 768
逝去的感伤
逝去的感伤 2020-12-16 08:39

I am facing error java.sql.SQLFeatureNotSupportedException in my prepare statement. I am using Mysql database.

Below is my code.

class tmp {
public s         


        
3条回答
  •  有刺的猬
    2020-12-16 09:05

    For Mysql -

    Setting array is not possible in Mysql.

    Instead of that you can form a query for (?,?,..) in the loop and same way for setting values.

    String[] Parameter = { "user1", "Administrator" };
    String query = "select * from userinfo where firstname in (";
    String temp = "";
    
    for(i = 0; i < Parameter.length; i++) {
      temp += ",?";
    }
    
    temp = temp.replaceFirst(",", "");
    temp += ")";
    query = query + temp;
    
    PreparedStatement pst = conn.prepareStatement(query);
    

    so query becomes

    select * from userinfo where firstname in (?,?)

    and pass values also using loop.

    For Oracle -

    ArrayDescriptor arrayDescriptor = ArrayDescriptor.createDescriptor("CHAR_ARRAY", conn);
    String[] Parameter = { "user1", "Administrator" };
    java.sql.Array sqlArray = new oracle.sql.ARRAY(arrayDescriptor, conn, content);
    .
    .
    pstmt.setArray(1, sqlArray);
    

提交回复
热议问题