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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于ArcEngine的GIS数据处理系统.zip
- (源码)基于JavaFX和MySQL的医院挂号管理系统.zip
- (源码)基于IdentityServer4和Finbuckle.MultiTenant的多租户身份认证系统.zip
- (源码)基于Spring Boot和Vue3+ElementPlus的后台管理系统.zip
- (源码)基于C++和Qt框架的dearoot配置管理系统.zip
- (源码)基于 .NET 和 EasyHook 的虚拟文件系统.zip
- (源码)基于Python的金融文档智能分析系统.zip
- (源码)基于Java的医药管理系统.zip
- (源码)基于Java和MySQL的学生信息管理系统.zip
- (源码)基于ASP.NET Core的零售供应链管理系统.zip