Statement和PreparedStatement的功能主要是对sql语句的执行

区别

(1)Statement每执行一条sql语句就需要生成一条执行计划,执行100条就需要100条执行计划PreparedStatement在执行相同

功能的sql语句,但仅仅是参数不同时,则只需要编译一次,更适合批量处理

(2)PreparedStatement中的SQL语句是可以带参数的,避免了用字符串连接拼接SQL语句的麻烦和不安全

例如sql语句

select * from user where id=1

select * from user where id=2

如果用Statement语句执行则需要生成两个执行计划而PreparedStatement则只需要编译一次,执行时仅仅是换个参数而已所以当

在执行大量的功能重复的语句时,效率会成百倍的提升。

两者的使用:

首先连接数据库    这都是相同的
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
String sql = "select * from goods where goodsid = 123";
DriverManager.registerDriver(new com.mysql.jdbc.Driver());//注册数据库驱动
Connection conn = DriverManager.getConnection(url, user, password);//连接数据库

Statement在执行sql语句时不能再sql语句中设置参数

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
int id = rs.getInt("goodsid");
String name = rs.getString("goodsname");
int price = rs.getInt("costprice");
String manufacturer = rs.getString("manufacturer");
System.out.println(id+" "+name+" "+price+" "+manufacturer);
}
rs.close();
conn.close();
st.close();

PreparedStatement执行sql语句

PreparedStatement pst = conn.prepareStatement(sql1);
pst.setInt(1,789);//第一个参数指的是sql语句中第几个参数(问号),第二个参数为?处要填的值
pst.setString(2, "大米");
pst.setInt(3, 220);
pst.setInt(4, 500);
pst.setString(5,"大米公司");
pst.executeUpdate();
conn.close();
pst.close();

参考:http://blog.csdn.net/jiangwei0910410003/article/details/26143977


jdbc中Statement和PreparedStatement有什么区别?哪个性能更好?的更多相关文章

  1. Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?

    Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别? Java 中访问数据库的步骤 1)注册驱动: 2)建立连接: 3)创建Statement: 4)执 ...

  2. Statement和PreparedStatement之间的区别

    Statement和PreparedStatement之间的区别: 1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程2.使用 Statement ...

  3. 请教JDBC中的thin和OCI的区别\

    请教JDBC中的thin和OCI的区别 https://zhidao.baidu.com/question/2267123737573204748.html

  4. Statement、 PreparedStatement 、CallableStatement 区别和联系

    Statement. PreparedStatement .CallableStatement 区别和联系 1. Statement.PreparedStatement和CallableStateme ...

  5. JDBC与Statement和PreparedStatement的区别

    一.先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入 ...

  6. 今天第一天开通博客,随笔总结一下resultType(属性)和resultMap,collection和association,Statement和PreparedStatement各自的区别

    1.resultType(属性)和resultMap(标签引用)的区别? resultType不支持自定义返回结果,会将查询到的结果通过到type中java对象的同名的属性,对象中的属性名必须和数据库 ...

  7. JDBC之Statement、PreparedStatement和CallableStatement

    JDBC提供了Statement.PreparedStatement和CallableStatement三种方式来执行查询语句,其中Statement用于通用查询,PreparedStatement用 ...

  8. mysql中in和exists二者的区别和性能影响

    mysql查询语句in和exists二者的区别和性能影响 还记得一次面试中被人问到in 和 exists的区别,当然只是草草做答,现在来做下分析. mysql中的in语句是把外表和内表作hash 连接 ...

  9. JDBC中Statement接口提供的execute、executeQuery和executeUpdate之间的区别

    Statement 接口提供了三种执行 SQL 语句的方法:executeQuery.executeUpdate 和 execute.使用哪一个方法由 SQL 语句所产生的内容决定. 方法execut ...

随机推荐

  1. niosii 改变软核之后重新编译方法

    操作系统:Win7 64 bit 开发环境:Quartus II 12.0 (64-Bit)  + Nios II 12.0 Software Build Tools for Eclipse 使用Qu ...

  2. webpack新版本4.12应用九(配置文件之configuration)

    配置 查看原文|编辑此页 webpack 是需要传入一个配置对象(configuration object).取决于你如何使用 webpack,可以通过两种方式之一:终端或 Node.js.下面指定了 ...

  3. .Net Remoting编程 ---- 系列文章

    .Net Remoting(应用程序域) - Part.1 摘要: 本文是.Net Remoting系列的第一篇文章,讲述了Remoting的“前驱知识点”--应用程序域.传值封送(Marshal b ...

  4. xe 最大连接数限制、记录客户连接、心跳

    xe 最大连接数限制.记录客户连接.心跳   //author: cxg unit DSServerContainer; interface uses  SysUtils, Classes, IniF ...

  5. linux解压缩基本命令使用

    解压缩命令1.gzip 只能压缩文件,不可压缩目录,压缩后不保留原文件gzip a.txt会删除原文件 生成.gz后缀的文件 a.txt.gz2.gunzip解压.gz的文件gzip -d a.txt ...

  6. 【转】学习使用Jmeter做压力测试(一)--压力测试基本概念

    一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测试,两者可以结合进行. 通过负载测试,确定在各种工作负载下 ...

  7. innodb事务日志详解

    首先看InnoDB的缓存和文件的关系图如下: InnoDB事务日志功能介绍 InnoDB使用日志来减少提交事务时的开销.因为日志中已经记录了事务,就无须在每个事务提交时把缓冲池的脏块刷新(flush) ...

  8. Java-Runoob:Java 条件语句

    ylbtech-Java-Runoob:Java 条件语句 1.返回顶部 1. Java 条件语句 - if...else 一个 if 语句包含一个布尔表达式和一条或多条语句. 语法 if 语句的语法 ...

  9. js判断是否是用微信浏览器打开

    有时候微信开发,需要根据使用的浏览器不同,来进行不同的处理. 下面的代码,可以判断是否使用的是微信浏览器. <!DOCTYPE HTML> <html lang="en&q ...

  10. mysql 内存体系结构--session

    体系结构tmp_table_size & max_heap_table_size ,这个是会话级的内存结构mysql使用总内存 = global_buffers + thread_buffer ...