PreparedStatement与Statement在使用时的区别
1.Statement:
a.写sql语句
b.然后再执行executeUpdate(sql)或executeQuery(sql)

2.PreparedStatement:
a.写sql语句(可能存在占位符:?)
b.在创建PreparedStatement对象时,将sql预编译:prepareStatement(sql)
c.setXXX():替换占位符
d.最后执行executeUpdate()或executeQuery()

推荐使用PreparedStatement的原因:
1.编码更加简洁
避免了写sql语句时字符串的拼接。
2.提高性能
应用场景:录入100条数据
Statement:由其方法executeUpdate(sql)可知,要将sql语句编译100次
PStatement:因为其先进行预编译,然后再执行executeUpdate()
3.安全
可以有效防止sql注入

注意:PreparedStatement的强大之处体现在以下这段代码

         先写sql语句,其次用占位符来实现Statement那繁琐的拼接字符串最后再执行增删改查方法String sql="insert into team values(?,?,?)";pstmt=con.prepareStatement(sql);//预编译pstmt.setInt(1, 8);pstmt.setString(2, "科比");pstmt.setInt(3, 40);System.out.println("获取数据对象成功!");pstmt.executeUpdate();pstmt.executeQuery();

应用实例:使用PreparedStatement来实现对数据库的增删改查

JDBCDemo2.java

package jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class JDBCDemo2 {// 连接字符串private static final String URL = "jdbc:mysql://127.0.0.1:3306/basketball";private static final String USERNAME = "root";private static final String PWD = "123abc";private static final String DRIVER="com.mysql.jdbc.Driver";//对数据库的增删改:executeUpdate()public static void update() {// 增删改Connection con = null;PreparedStatement pstmt=null;try {// a.导入驱动包:Class.forName()Class.forName(DRIVER);System.out.println("成功加载驱动!");// b.与数据库建立连接:DriverManager.getConnection()con = DriverManager.getConnection(URL,USERNAME,PWD);System.out.println("连接数据库成功!");//c.获取数据对象:con.prepareStatement()String sql="insert into team values(?,?,?)";pstmt=con.prepareStatement(sql);//预编译pstmt.setInt(1, 8);pstmt.setString(2, "科比");pstmt.setInt(3, 40);System.out.println("获取数据对象成功!");//d.操作数据对象:pstmt.executeUpdate()pstmt.executeUpdate();System.out.println("数据对象操作成功!");} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {try {if (pstmt != null) pstmt.close();if (con != null) con.close();} catch (SQLException e) {e.printStackTrace();}}     }//对数据库的增删改:executeQuery()public static void query() {Connection con=null;PreparedStatement pstmt=null;ResultSet rs=null;try {//1.加载具体的驱动类:Class.forName()Class.forName(DRIVER);System.out.println("加载驱动类成功!");//2.连接数据库:DriverManager.getConnection()con=DriverManager.getConnection(URL,USERNAME,PWD);System.out.println("连接数据库成功!");//3.获取操作数据库对象:prepareStatement()//String sql="select * from team where t_name like ?";String sql="select * from team";pstmt=con.prepareStatement(sql);//pstmt.setString(1, "%姆斯");//模糊查询System.out.println("获取操作数据库对象成功!");//4.查询数据:stmt.executeQuery()pstmt.executeQuery();//5.返回到结果集rsrs=pstmt.executeQuery(sql);System.out.println("查询数据成功!");//6.获取数据:rs.next(),rs.getXXX()      while(rs.next()!=false) {//rs.next():判断该行是否有数据,返回值为true或falseint id=rs.getInt("t_id");//rs.getInt():获取数据表对应行的指定字段值的数据String name=rs.getString("t_name");int age=rs.getInt("t_age");System.out.println(id+"---"+name+"---"+age);}} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {try {//关闭jdbc三幻神(类似与栈的顺序:先开先关)if(rs!=null) rs.close();if(pstmt!=null) pstmt.close();if(con!=null) con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void main(String[] args) {//增删改//update();//查询query();}
}

测试截图

JDBC:PreparedStatement与Statement在使用时的区别相关推荐

  1. IEnumerable和IQueryable在使用时的区别

    最近在调研数据库查询时因使用IEnumerable进行Linq to entity的操作,造成数据库访问缓慢.此文讲述的便是IEnumerable和IQueryable的区别. 微软对IEnumera ...

  2. 移动硬盘和电脑内置硬盘使用时的区别

    读写速度:SATA3接口内置硬盘>USB3.0接口移动硬盘 对于台式机而言,内置硬盘转速更快.对于笔记本而言,两者转速相同.

  3. vue的mouted和created在使用时的区别

    引用:https://www.cnblogs.com/dehuachenyunfei/p/11811969.html 引用:https://blog.csdn.net/xdnloveme/articl ...

  4. 【笔试面试考点】PreparedStatement和Statement的区别与联系批量插入数据的优化

    目录 ​ 一.PreparedStatement和Statement的区别去联系 一.preparedStatement与Statement的联系: 二.区别: 二.批量插入数据到数据的逐步优化 一. ...

  5. JDBC中的Statement和PreparedStatement的区别

    PreparedStatement是什么?PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement ...

  6. MySQL JDBC PreparedStatement

    JDBC作为JAVA访问数据库的一套规范与标准,统一了数据库操作的API,大大简化了程序开发工作.不过由于历史原因,MySQL对JDBC默认的实现与规范定义或者说其它数据库如Oracle并不一致,为了 ...

  7. PreparedStatement和Statement的区别

    PreparedStatement 和 Statement 的区别:1.PreparedStatement在使用时只需要编译一次,就可以运行多次,Statement每运行一次就编译一次,所以Prepa ...

  8. preparedStatement和Statement区别

    原文:https://blog.csdn.net/xuebing1995/article/details/72235380 一.概念 PreparedStatement是用来执行SQL查询语句的API ...

  9. Java中PreparedStatement和Statement的用法区别

    Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈   1. PreparedStatement接口继承Sta ...

最新文章

  1. 利用OpenSSH实现基于秘钥的认证
  2. windows7与虚拟机fedora 9.0文件共享
  3. iOS6.0下获取通讯录用户列表
  4. WinForm 天猫2013双11自动抢红包【源码下载】
  5. python中基于tcp协议的通信(数据传输)
  6. java 总结几种线程异步转同步的方法
  7. Java static用法代码讲解
  8. [转][C#]Environment 类
  9. opencv 的norm_OpenCV学习笔记(一)之图像金字塔-上采样与降采样与DOG
  10. mysql 8.0.3 rc_MySQL 8.0.3 RC 版即将发布,看看有哪些变化
  11. 五步制定企业的使命、愿景和价值观
  12. 使用 python 批量移动文件夹下的文件
  13. 什么是图床如何搭建图床
  14. windbg分析崩溃dmp没有可用信息的处理
  15. 阿里云盘 手动获取token教程
  16. STM32 ETR使用
  17. linux lseek 指定 文件大小,linux下通过lseek()实现文件大小设置
  18. 2022浙江理工校赛 问题 I: Tournament Seeding
  19. Git 无法切换分支,报错git did not exit cleanly
  20. windows11如何去桌面快捷键小箭头的方法

热门文章

  1. mysql hql查询语句_查询hql语句
  2. 如何使用 Python 绘制一套动态图形?
  3. 中国特产 强悍的假冒品牌【转】
  4. 【PA2012】【BZOJ3502】Tanie linie
  5. 2022年4月中国葡萄酒产量数据
  6. Mp3tag新版发布
  7. Java xml字符串转json
  8. 2013年11月21日
  9. go 清空文件内容_回收站清空了怎么恢复?恢复回收站以前的文件
  10. Linux设置swap分区