Java 中如何为 SQL 传递数组参数

Java中动态传递数组参数执行下面的 SQL:
select * from employee where STATE in (?)

通常要对数组参数采用拼串方式,操作比较麻烦。
借助 SPL 可以直接使用数组参数传递给 SQL 进行查询。

1. 集算器参数设置:


参数 state 为要传递的州数组。

2. 编写脚本demo.dfx:

AB
1=connect("db")/ 连接数据库
2=A1.query@x("select * from EMPLOYEE where STATE in (?)", state)/ 查询所给州的员工记录。

3. 调试执行时,设置数组参数 state=[Arkansas, California, Colorado] 作为 SQL in 的查询条件,执行脚本返回结果:

EID NAME SURNAME GENDER STATE BIRTHDAY HIREDATE

1 Rebecca Moore F California 1974-11-20 2005-03-11

6 Matthew Johnson M California 1984-07-07 2005-07-07

8 Megan Wilson F California 1979-04-19 1984-04-19

23 Joseph Turner M California 1983-08-27 2003-08-27

27 Alexis Jones F California 1983-12-27 2003-12-27

... ... ...

Java中调用这段脚本:

public static void doWork() {
     Connection con =  null; 
    java.sql.PreparedStatement st = null; 

try{ 
        Class.forName("com.esproc.jdbc.InternalDriver"); 
        con = DriverManager.getConnection("jdbc:esproc:local://");   
        // 调用脚本 demo.dfx 
        st=con.createStatement();   
        st =con.prepareCall("call demo (?)");   
        st.setObject(1, new String[]{“Arkansas”,"California","Colorado"}); 
        st.execute();
        // 获取结果集
        ResultSet rst = st.getResultSet();
        System.out.println(rst);
    }catch(Exception e){
        System.out.println(e);
    }finally{
        // 关闭连接
 if (con!=null) {
 try {
                con.close();
            }catch(Exception e) {
                System.out.println(e);
            }
        }   
    }
}

如果 s="Arkansas, California, Colorado"作为字符串参数传递,可使用 s.split@c() 转换成数组形式进行查询。SPL 支持多样化的输入参数方式进行 SQL 查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值