JDBC预编译PreparedStatement支持in参数

JDBC PreparedStatement预编译SQL语句时,需要对传入的SQL语句中对引号中的特殊字符进行转意,下面整理了一个方法,来处理PreparedStatement预编译in的问题,代码如下:

package com.jdbc;
import java.sql.Array;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class Test
{
public static void main(String[] args)
{

// 声明一个数据库操作对象
PreparedStatement pstmt = null;
// 声明一个结果集对象
ResultSet rs = null;
// 声明一个SQL变量,用于保存SQL语句
String sql = null;
// DataBaseConnection为具体的数据库连接及关闭操作类
Connection con = null;
// 连接数据库
con = ConnectionFactory.getConnection();

//创建参数列表
List<String> list = new ArrayList<String>();
list.add("zhangsan");
list.add("lisi");

//根据参数列表的大小生成in串
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < list.size(); i++)
{
buffer.append("?, ");
}
buffer.deleteCharAt(buffer.length() - 1);
buffer.deleteCharAt(buffer.length() - 1);

// 编写SQL语句
sql = "SELECT * FROM t_TaskList Where OperatorName in ("
+ buffer.toString() + ")";
try
{

pstmt = con.prepareStatement(sql);
// 查询记录
//根据参数列表设置sql参数
for (int i = 0; i < list.size(); i++)
{
pstmt.setString(i + 1, list.get(i));
}
rs = pstmt.executeQuery();
while (rs.next())
{
System.out.print(rs.getString("id"));
}
// 依次关闭
rs.close();
pstmt.close();

} catch (Exception e)
{
System.out.println(e);
} finally
{
// 最后一定要保证数据库已被关闭
try
{
con.close();
} catch (SQLException e)
{
e.printStackTrace();
}
}
}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值