jdbc中Statement和PreparedStatement有什么区别?哪个性能更好?
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有什么区别?哪个性能更好?的更多相关文章
- Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别? Java 中访问数据库的步骤 1)注册驱动: 2)建立连接: 3)创建Statement: 4)执 ...
- Statement和PreparedStatement之间的区别
Statement和PreparedStatement之间的区别: 1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程2.使用 Statement ...
- 请教JDBC中的thin和OCI的区别\
请教JDBC中的thin和OCI的区别 https://zhidao.baidu.com/question/2267123737573204748.html
- Statement、 PreparedStatement 、CallableStatement 区别和联系
Statement. PreparedStatement .CallableStatement 区别和联系 1. Statement.PreparedStatement和CallableStateme ...
- JDBC与Statement和PreparedStatement的区别
一.先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入 ...
- 今天第一天开通博客,随笔总结一下resultType(属性)和resultMap,collection和association,Statement和PreparedStatement各自的区别
1.resultType(属性)和resultMap(标签引用)的区别? resultType不支持自定义返回结果,会将查询到的结果通过到type中java对象的同名的属性,对象中的属性名必须和数据库 ...
- JDBC之Statement、PreparedStatement和CallableStatement
JDBC提供了Statement.PreparedStatement和CallableStatement三种方式来执行查询语句,其中Statement用于通用查询,PreparedStatement用 ...
- mysql中in和exists二者的区别和性能影响
mysql查询语句in和exists二者的区别和性能影响 还记得一次面试中被人问到in 和 exists的区别,当然只是草草做答,现在来做下分析. mysql中的in语句是把外表和内表作hash 连接 ...
- JDBC中Statement接口提供的execute、executeQuery和executeUpdate之间的区别
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery.executeUpdate 和 execute.使用哪一个方法由 SQL 语句所产生的内容决定. 方法execut ...
随机推荐
- Django实现微信公众号简单自动回复
在上篇博客阿里云部署django实现公网访问已经实现了了django在阿里云上的部署,接下来记录django实现微信公众号简单回复的开发过程,以方便日后查看 内容概要: (1)微信公众号声请 (2)微 ...
- 关于 avalon总线理解(整理)
1,一个基于Avalon接口的系统会包含很多功能模块,这些功能模块就是Avalon存储器映射外设,通常简称Avalon外设.所谓存储器映射外设是指外设和存储器使用相同的总线来寻址,并且CPU使用访问存 ...
- LA3890 Most Distant Point from the Sea
题意 PDF 分析 可以二分答案,检验就用半平面交,如果平面非空则合法. 时间复杂度\(O(T n \log^2 n)\) 代码 #include<iostream> #include&l ...
- Oracle创建实例
1.打开database configuration assistant 2.下一步 3.下一步 4.完成 5.添加完密码后,点击关闭.
- maven搭建
http://blog.csdn.net/zhshulin/article/details/30779873 http://blog.csdn.net/zhshulin/article/details ...
- 第15篇 PSR-04 规范
1. Overview This PSR describes a specification for autoloading classes from file paths. It is fully ...
- 从ROS bag文件中提取图像
从ROS bag文件中提取图像 创建launch文件,如下: export.launch <launch> <node pkg="rosbag" type=&qu ...
- ffmpeg摄像头采集h264编码RTP发送
一. 相关API说明 1. av_register_all 2. avformat_network_init 不管是流媒体发送还是流媒体接收, 需要先执行该函数. 3. avformat_alloc_ ...
- PS相关技术
PS相关长时间不用就忘记了,做个笔记,记录下来 (1)复制图层,可以将图层复制到另外的图层里去,这样,多个图层就可以编辑了 (2)通过建立选区,可以选择右键,通过剪切的图层,通过复制的图层将图片抠出来 ...
- NOIP2005普及组第4题 循环
NOIP2005普及组第4题 循环 时间限制: 1 Sec 内存限制: 128 MB提交: 27 解决: 6[提交][状态][讨论版][命题人:外部导入] 题目描述 乐乐是一个聪明而又勤奋好学的孩 ...