prepareStatement和Statement的区别
prepareStatement和Statement的区别 prepareStatement和Statement是 Java 中两个常用的数据库操作接口,它们都可以用来执行 SQL 语句,但是它们之间有着明显的区别。 从创建时的区别开始,Statement 需要通过 Connection 对象的 createStatement() 方法创建,而 PreparedStatement 需要通过 Connection 对象的 prepareStatement() 方法创建,并且需要带有 SQL 语句。 Statement stm = con.createStatement(); PreparedStatement pstm = con.prepareStatement(sql); 在执行时,Statement 需要将 SQL 语句作为参数传递给 execute() 方法,而 PreparedStatement 则可以直接调用 execute() 方法,因为它已经绑定了 SQL 语句。 stm.execute(sql); pstm.execute(); PrepareStatement 的一个重要特性是,它可以绑定一个 SQL 语句,然后可以多次执行该语句,只需要改变参数的值即可。这使得 PreparedStatement 在执行同构的 SQL 语句时具有很高的执行效率。 例如,在一个应用程序中需要执行多次相同的 SQL 语句,但每次都需要不同的参数时,使用 PreparedStatement 可以提高执行效率。 Statement 则不同,每次执行都需要将 SQL 语句作为参数传递给 execute() 方法,这使得 Statement 在执行异构的 SQL 语句时具有很高的执行效率。 此外,PreparedStatement 在需要外部变量时的执行效率也更高。 下面是一个使用 Statement 的 Java 代码示例: ```java package com.JDBC.proc; import java.sql.*; public class StatementTest { public static void main(String args[]){ Connection conn = null; Statement stm = null; ResultSet rs = null; try { conn = DBTool.getConnection(); String sql = "select EmpNo,EName from emp " + "where empNo=7499"; stm = conn.createStatement(); rs = stm.executeQuery(sql); while(rs.next()){ System.out.println(rs.getInt(1)+"---"+rs.getString(2)); } } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally{ DBTool.release(rs, stm, conn); } } } ``` 这个示例中,我们使用 Statement 执行了一条 SQL 语句,并将结果打印出来。 下面是一个使用 PreparedStatement 的 Java 代码示例: ```java package com.JDBC.proc; import java.sql.*; public class PrepareStatement { public static void main(String[] args){ Connection conn = null; PreparedStatement psmt = null; ResultSet rs = null; try { conn = DBTool.getConnection(); String sql = "select EmpNo,Ename " + "from emp " + "where EmpNo=?"; psmt = conn.prepareStatement(sql); psmt.setInt(1, 7499); rs = psmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+"---"+rs.getString(2)); } } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally{ DBTool.release(rs, psmt, conn); } } } ``` 这个示例中,我们使用 PreparedStatement 执行了一条 SQL 语句,并将结果打印出来。 prepareStatement 和 Statement 都可以用来执行 SQL 语句,但是它们之间有着明显的区别。在选择使用哪一个时,需要根据具体情况进行选择。
- TANHUIXIN_2017-12-26挺不错的,讲得很清楚
- 粉丝: 0
- 资源: 45
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于JavaScript的在线考试系统(编号:65965158)(1).zip
- 五相电机双闭环矢量控制模型-采用邻近四矢量SVPWM-MATLAB-Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成
- Linux下的cursor安装包
- springboot-教务管理系统(编号:62528147).zip
- 3dmmods_倾城系列月白_by_白嫖萌新.zip
- SVPWM+死区补偿(基于电流极性)+高频注入法辨识PMSM的dq轴电感(离线辨识)-simulink
- 微信跑腿小程序的设计与实现
- 基于 Java 实现的上位机通讯程序,可与单片机进行数据交换
- screentshot-2024.12.22-20.45.35.jpg
- 基于c51单片机,汇编语言实现的时钟,有仿真电路图