PrepareStatement是Statement的一个子接口,可以预编译SQL语句,预编译后的语句被存储在PrepareStatement的对象中,从而可以使用该对象多次高效的执行该SQL语句。并且PrepareStatement可以使用占位符编写SQL语句。下面是一个结合了Statement和PrepareStatement的程序:

package perpared;import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
import java.sql.PreparedStatement;
public class PerparedStatementTest {private String driver;private String url;private String user;private String pass;private Connection conn;private Statement stmt;private ResultSet rs;private PreparedStatement pstmt;public void initParam(String paramFile) throws Exception{Properties props=new Properties();props.load(new FileInputStream(paramFile));driver=props.getProperty("driver");url=props.getProperty("url");user=props.getProperty("user");pass=props.getProperty("pass");}public void initJdbc() {try{Class.forName(driver);conn=DriverManager.getConnection(url,user,pass);}catch(Exception e){e.printStackTrace();}}public void insertUseStatement() throws Exception{long start=System.currentTimeMillis();try{stmt=conn.createStatement();for(int i=0;i<100;i++){stmt.executeUpdate("insert into student_table(student_id,student_name)"+"values("+i+",'name');");}System.out.println(System.currentTimeMillis()-start);}finally{if(stmt!=null){stmt.close();}}}//PerparedStatement相对于Statement可以更为的高效public void insertUsePerpare() throws Exception{long start=System.currentTimeMillis();try{//使用占位符?,?pstmt=conn.prepareStatement("insert into student_table values(?,?);");//插入100条记录for(int i=0;i<100;i++){pstmt.setString(2,"name"+i);pstmt.setInt(1, i);pstmt.executeUpdate();}System.out.println(System.currentTimeMillis()-start);}finally{if(pstmt!=null){pstmt.close();}}}public void deleteUsePerpare() throws Exception{try{pstmt=conn.prepareStatement("delete from student_table where student_id=? "+ "or student_name=?");for(int i=0;i<100;i++){pstmt.setInt(1, i);pstmt.setString(2, "name"+i);pstmt.executeUpdate();}}finally{if(conn!=null){conn.close();}if(pstmt!=null){pstmt.close();}}}public static void main(String[] args) throws Exception{PerparedStatementTest pst=new PerparedStatementTest();pst.initParam("mysql.ini");pst.initJdbc();pst.insertUsePerpare();pst.deleteUsePerpare();}}

其中的配置文件mysql.ini在上一篇中已经写过了,所以就不再写了。

感觉这种占位符对于数据库的记录增加,删除,修改确实挺有好处的。

PrepareStatement的用法相关推荐

  1. PrepareStatement用法(附源码解析)

    PrepareStatement 基本用法 1. 加载驱动 首先在pom.xml 中引入 mysql 依赖 <dependency><groupId>mysql</gro ...

  2. JDBC 中 CreateStatement 和 PrepareStatement 的区别

    在学习JDBC的时候碰到一个问题.获取向数据库发送sql语句的statement对象有两种类似的接口这两个接口没有本质上的区别.都是通过对象调用executeQuery方法来执行SQL语句.说是Cre ...

  3. prepareStatement与Statement的区别

    prepareStatement与Statement的区别 1.区别: stmt=conn.CreateStatement(); resultSet rs=stmt.executeQuery(sql) ...

  4. prepareStatement用法

    1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程 2.使用 Statement 对象.在对数据库只执行一次性存取的时侯,用 Statement 对 ...

  5. Spring中jdbcTemplate的用法实例

    一.首先配置JdbcTemplate: 要使用Jdbctemplate 对象来完成jdbc 操作.通常情况下,有三种种方式得到JdbcTemplate 对象.        第一种方式:我们可以在自己 ...

  6. HibernateTemplate 的常见用法

    HibernateTemplate 提供了非常多的常用方法来完成基本的操作,比如增加.删除.修改及查询等操作,Spring 2.0 更增加对命名 SQL 查询的支持,也增加对分页的支持.大部分情况下, ...

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

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

  8. jsp 防止sql注入 之 preparestatement篇(转载)

    在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement. 基于以下的原因: 一.代码的可 ...

  9. oracle java 绑定变量的值_Oracle SQL调优之绑定变量用法简介

    最近在看<基于Oracle的SQL优化一书>,并做了笔记,作者的个人博客:http://www.dbsnake.net/ @ 一.SQL执行过程简介 继上一篇博客Oracle的cursor ...

最新文章

  1. android apk获取权限,Android apk 获取系统权限的方式
  2. Python Demo 04-蒙特卡罗猜测与计时
  3. 数据结构--双链表的创建和操作
  4. sql server 2005 COUNT_BIG (Transact-SQL)
  5. 计算机网络之数据链路层:1、概述
  6. jquery 选择器之children与find
  7. 市场观察人士:有充足代工产能支持 联发科3月份营收有望创下新高
  8. 4K视频在线看,网速跟不上怎么办?
  9. 六石管理学:切勿通过扯皮折腾别人,一句你不要管了即可
  10. IntelliJ IDEA代码格式化,代码超出规定宽度自动换行
  11. Spring入门到精通:第二章 IOC容器(XML方式):7.IOC容器Bean管理XML方式-bean作用域
  12. 基于JTT808协议的车联网网关中间件
  13. 小黄鸡.Net版(Simsimi.Net)
  14. gazebo构建仿真场景并制作机器人模型
  15. wcl怀旧服网站中文查服务器fb进度,魔兽世界怀旧服wcl数据查询方法
  16. 理财就是理生活 —— 小白理财训练营(下)
  17. 【Dos】常见的Dos攻击
  18. 苍蝇也有自己的“领空”吗?
  19. 论文翻译解读:PARIS :Probabilistic Alignment of Relations, Instances, and Schema
  20. 气压传感器MPX4115学习笔记

热门文章

  1. 计算机硬件——PC简单构成
  2. 倪光南院士:中国该对微软说“不”了
  3. 南卡和小米哪个降噪好?南卡和小米降噪耳机对比测评
  4. c语言爱心加我爱你,急求一个输入“沈”就能显示“我爱你”然后有一个心型图案的c语言程序代码...
  5. redis阻塞队列 java_Redis阻塞操作实现原理
  6. 攻防世界 web新手练习区WP(超新新手!)
  7. C#图片对比,支持图片局部和整体图片比对,FREAK算法,《FREAK: Fast Retina Keypoint》,特征匹配
  8. iOS开发零基础教程之真机调试流程
  9. Cocos2d-x的骨骼动画Spine和Armature
  10. 9款最好的基于Rails的CMS内容管理系统