PreparedStatement的使用
“我们盛装奔赴一场五千公里的婚礼”| 【松下S1H】旅拍工作分享
PreparedStatement的使用
- 一问一答环节
- why?为什么要使用它?
较为官方的解释:
PreparedStatement是Statement的子接口,它可以预编译 SQL 语句并将预编译后的SQL语句存储在PreparedStatement对象中。由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement对象。
大白话:
我们在执行查询或者更新数据表数据的时候,拼写SQL语句是一个很费力并且容易出错的事情,PreparedStatement可以简化这样的一个过程.
一问一答环节
PreParedStatement(预编译语句)
why?为什么要使用它?
使用Statement需要进行拼写SQl语句,辛苦并且容易出错,之前使用Statement的SQL语句的形式是这样的
String sql = "insert into student" + " values("
+ student.getFlowId() + "," + student.getType() + ",'"
+ student.getIdCard() + "','" + student.getExamCard() + "','"
+ student.getStudentName() + "','" + student.getLocation()
+ "'," + student.getGrade() + ")";
使用PreparedStatement:是Statement的子接口,可以传入带占位符的SQL语句,提供了补充占位符变量的方法
//创建PrepareStatement
preparedStatement = connection.prepareStatement(sql);
现在当我们看里面的sql作为参数传入了,就不需要我们在费力拼写了。
String sql="insert into student values(?,?,?,?,?,?,?)";
可以调用PreparedStatement的setXxx(数据类型)(int index,Object val)设置占位符的值,其中index的值从1开始
index的值从1开始
执行SQl语句:excuteQuery()或者excuteUpdate()就可以完成查询或者数据的更新.【注意】:此时函数的参数位置不需要传入SQL语句,注意同使用Statement的update函数的差别
部分案列代码如下:
//添加学生private void addStudent() {Connection connection = null;PreparedStatement preparedStatement = null;try {//加载驱动Class.forName("com.mysql.jdbc.Driver");//建立连接connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "123456");Student student=new Student(6, "zczc");String sql = "insert into student values (?,?)";//创建PrepareStatementpreparedStatement = connection.prepareStatement(sql);preparedStatement.setInt(1, student.getStudentID());preparedStatement.setString(2, student.getStudentName());//执行SQL// 执行更新操作preparedStatement.executeUpdate();} catch (Exception e) {e.printStackTrace();//关闭资源} finally {if (preparedStatement != null) {try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();}preparedStatement = null;}if (connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}connection = null;}}}
使用PreparedStatement的好处:
- 提高代码的可读性和可维护性;
- 最大程度的提高性能,SQL语句被多次执行
- 可以防止SQL注入
PreparedStatement的使用相关推荐
- resultset mysql_MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...
[声明] 欢迎转载,但请保留文章原始出处→_→ [正文] 一.ResultSet接口的介绍: 对数据库的查询操作,一般需要返回查询结果,在程序中,JDBC为我们提供了ResultSet接口来专门处理查 ...
- PreparedStatement
该 PreparedStatement接口继承Statement,并与之在两方面有所不同: PreparedStatement 实例包含已编译的 SQL 语句.这就是使语句"准备好" ...
- 关于JDBC中的 PreparedStatement 的使用讲解
**关于JDBC中的 PreparedStatement 的使用讲解@**TOC 文章转载于博客 https://www.cnblogs.com/ysw-go/p/5459330.html 如有侵权, ...
- preparedStatement平台:
public class cs{ public static void main(String[] args){ try{ class.forName("com.mysql.jdbc.Dri ...
- 详解PreparedStatement
详解PreparedStatement /*** PrepareStatement 测试插入数据库*//*** 如果使用Statement,那么就必须在SQL语句中,实际地去嵌入值,比如之前的inse ...
- JDBC--Statement,PreparedStatement,CallableStatement的区别
JDBC: Statement(接口) | PreparedStatement(接口) | CallableStatement(接口) 以上三者为继承关系. 1).概念: Stat ...
- PreparedStatement和CallableStatement都可以调用存储过程
2019独角兽企业重金招聘Python工程师标准>>> 他们都可以调用存储过程,上午收了下主要区别.但是等于放屁,说了一大推也没说个所以然,就看见了这一句,说是CallableSta ...
- 【转】JDBC为什么要使用PreparedStatement而不是Statement
http://www.importnew.com/5006.html PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement.PreparedSta ...
- java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setCharacterStream(ILjava/io/Reader;
出现上述异常是在使用MySQL进行大文本数据的读写时,使用PreparedStatement中的 setCharacterStream(int parameterIndex,Reader reader ...
- JDBC PreparedStatement 实现原理【推荐阅读】
???关注微信公众号:[芋艿的后端小屋]有福利: RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表 RocketMQ / MyCAT / Sharding-JDB ...
最新文章
- 135编辑器 html,135编辑器,微信图文编辑器,微信图文美化编辑器,格式多方便的图文编辑-...
- Spring boot 注解 ConfigurationProperties 的使用
- vue main.js 导入文件报错Module build failed: Error: No PostCSS Config found in:
- 今天准备正式开博了!专注于Silverlight!
- pyhton (一)基础
- Ubuntu16.04下创建工作空间并添加自己的功能包(python代码)
- 计算机基础知识统考12月份,(精)2016年12月份电大统考计算机考前辅导基础知识考试小抄【呕心沥血整理,值得一看哦!】.doc...
- android imageview移动,基于Android实现随手指移动的ImageView
- 疯狂java学习笔记之面向对象(三) - 方法所属性和值传递
- 垃圾邮件是什么样的邮件
- RTCP协议解析--RR
- 手机自动阅读挣钱,这次用脚本写
- 解析word文件的简单实现
- 购物直播APP系统+短视频系统开发方案
- honeyview(蜂蜜浏览器)将图片置于顶层
- dangdang.com的故事
- 关键词搜索排行榜-精准找到行业流量关键词
- PS不改变图片分辨率条件下改变照片kb大小
- python中set集合的使用
- 老男孩python培训课件
热门文章
- abaqus中python怎么建立参考点_怎么在abaqus中选定中心为参考点
- KDD 2022论文合集(持续更新中)
- PLC对步进电机的快速精确定位控制
- c语言差分qpsk编码信道估计 pudn,基于DSP的电力线载波OFDM调制解调器设计.doc
- MQTT介绍,服务器(EMQ X)搭建,客户端(mqtt-spy,安卓)使用,java编程示例
- 阿里巴巴战略发展史(转)
- 电力-开闭所/配电房/变电所/变电站
- 51单片机实现蜂鸣器报警
- 怎样用计算机粉碎文件夹,粉碎文件夹怎么操作 粉碎文件夹操作方法
- windows eclipse超详细安装教程