`

JDBC预编译PreparedStatement支持in参数

    博客分类:
  • Java
阅读更多
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();
			}
		}
	}
}
分享到:
评论

相关推荐

    java_JDBC预编译相关知识点参照.pdf

    总的来说,预编译语句PreparedStatement是Java JDBC中提高性能和保障安全性的重要工具,尤其是在处理大量重复的SQL操作和处理用户输入时。正确使用PreparedStatement,能够有效地优化数据库操作,并增强应用程序的...

    JDBC之PreparedStatement类中预编译的综合应用解析

    PreparedStatement是Java JDBC中用于执行预编译SQL语句的接口,它是Statement的子接口。预编译的SQL语句可以提高数据库操作的性能和安全性。在数据库系统中,预编译意味着SQL语句在首次执行前已经过编译,形成一个...

    Java之JDBC连接MySQL数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题 使用预编译对象PreparedStatement)

    Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题 使用预编译对象PreparedStatement) 配置文件 db.properties(保存数据库账号和密码等) 工具类 JDBCUtil.java(抽取公共部分,解决硬...

    MySQL预编译功能

    使用 PreparedStatement 也可以实现预编译功能,例如: Connection con = JdbcUtils.getConnection(); String sql = "select * from t_book where bid=?"; PreparedStatement pstmt = con.prepareStatement(sql); ...

    jdbc 增删改查事物处理, 批处理,以及预编译示例代码

    在Java数据库连接(JDBC)中,增删改查(CRUD)操作是与数据库交互的基础,事务处理、批处理和预编译SQL语句则是提高效率和保证数据一致性的关键技术。以下是对这些概念的详细说明: 1. **JDBC增删改查(CRUD)**:...

    JDBC基础教程之PreparedStatement.doc

    ### JDBC基础教程之PreparedStatement知识点详解 #### 一、概述 `PreparedStatement`是Java数据库连接(JDBC)API中的一种重要接口,它继承自`Statement`接口,并在其基础上进行了扩展和优化。`PreparedStatement`...

    【性能】JDBC PreparedStatement和连接池PreparedStatement Cache学习记录

    以Oracle数据库为例,它同样支持预编译的`PreparedStatement`,并且在处理大量重复的SQL语句时,能展现出更好的性能。Oracle还提供了游标(Cursor)缓存来存储预编译的SQL语句,当相同SQL再次执行时,可以直接使用...

    连接jdbc时sql语句统一设置参数

    在执行SQL语句时,我们通常使用`PreparedStatement`而非`Statement`,因为`PreparedStatement`支持预编译的SQL语句,能有效防止SQL注入攻击,并且允许我们以参数化的方式设置SQL语句中的值。这种方式不仅提高了效率...

    第10章 JDBC-课后习题1

    - 创建Statement或PreparedStatement对象:根据需求选择,Statement用于一般SQL语句,PreparedStatement用于预编译的SQL语句。 - 执行SQL:调用Statement或PreparedStatement的`executeQuery()`或`executeUpdate()...

    《SQL预编译和批量提交对性能提升效果探索》测试代码

    例如,在Java的JDBC中,我们可以使用PreparedStatement对象来实现预编译,它的优点在于减少解析和编译SQL语句的时间,提升执行速度。 接着,我们来讨论批量提交。在传统的数据库操作中,每次插入、更新或删除操作...

    如何获得PreparedStatement最终执行的sql语句

    在Java的JDBC编程中,`PreparedStatement`是一个非常重要的接口,它用于预编译SQL语句,提高了数据库操作的效率和安全性。当我们处理大量重复的SQL操作时,使用`PreparedStatement`可以避免SQL注入等问题,同时提升...

    一文搞懂MySQL预编译

    如果SQL语句结构相同,仅仅参数不同(比如多次插入不同的值),预编译则可以在首次执行时完成语法检查和编译,后续仅需替换参数并执行,从而节省了大量时间,提高了数据库的响应速度和整体性能。 2、MySQL执行预...

    Statement和PreparedStatement之间的区别

    首先, Statement对象执行的SQL语句是直接编译的,而PreparedStatement对象执行的SQL语句则是预编译的。预编译语句在执行之前已经被数据库编译器编译过,生成了执行代码,而Statement对象则需要在每次执行时重新编译...

    JDBC和Oracle的参数设置和调用技术.pdf

    Oracle的存储过程是预编译的代码块,能提升系统性能,减少网络传输,并允许代码的复用。它们使用PL/SQL语言编写,结合了SQL与过程化编程的特点。 在调用Oracle存储过程时,主要涉及以下几个步骤: 1. **加载JDBC...

    JAVA Web程序设计-3期(KC006) 08单元案例_预编译和存储过程操作教学案例.doc

    预编译SQL语句,也称为PreparedStatement,是Java JDBC提供的一种优化机制,主要解决动态SQL执行时的性能问题和防止SQL注入攻击。 在案例中,首先我们看到一个名为`pre_insert.jsp`的JSP文件,它是用于处理用户提交...

    j2ee07:jdbc01:Properties对象、四大参数、批量删除、基本的增删改查

    在实际应用中,通常会使用预编译的PreparedStatement对象来防止SQL注入攻击,并提高代码的可读性。 总之,理解Properties对象的使用、掌握JDBC的四大参数、熟练进行批量操作以及执行基本的CRUD操作,是每个Java EE...

    java中PreparedStatement和Statement的区别

    因为预编译语句有可能被重复调用,所以语句在被 DB 的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中。 第四,...

    JDBCDriver3.0.rar_jdbc driver 3.0_sql jdbc 3.0_sql server jdbc_s

    2. **预编译语句(PreparedStatement)**:预编译的SQL语句可以显著提升执行速度,同时防止SQL注入攻击。 3. **批处理操作**:允许多个SQL语句一次性提交,减少网络通信次数,提高整体执行效率。 4. **游标支持**:...

    jdbc 总结 有参考价值

    - PreparedStatement:预编译的SQL语句,支持参数化查询,效率高且安全。 4. 执行SQL: - executeQuery():用于执行SELECT语句,返回ResultSet对象。 - executeUpdate():用于执行INSERT、UPDATE、DELETE等修改...

    JDBCJDBC高级应用

    5. **预编译语句(PreparedStatement)**: - 预编译语句可以预先编译SQL模板,提高执行效率,同时防止SQL注入攻击。使用 `Connection.prepareStatement(String sql)` 创建预编译语句对象,然后使用 `setXXX()` ...

Global site tag (gtag.js) - Google Analytics