statement与preparedstatement的区别?及作用?
解决方案 »
- 如何在www.eclipse.org 里下载到以前的版本,我想要3.3版的
- 线程中创建线程
- 《JAVA面试题解惑系列1-11合集》PDF电子书下载
- poolman连接池问题无法立即刷新的问题!!
- JBuilder2006的存储器访问路径是什么?
- 高手请进:请教一个关于JDBC和多线程相关的问题
- jtree节点图标问题?
- 算法高手:如何把Sring str="100101010101"变成16进制的数?===马上给分!
- 连个边都找不着,真闷,学JAVA,是不是要配好服务器先呀,你们都用什么呢
- 求助大虾:Applet调用JDBC-ODBC桥连接数据库,Class.forName找不着类,
- 关于执行JAVA线程任务时出现异常后线程挂掉问题
- 如何获取ArrayList中item的名称?
我们先从这两个单词进行初步的讲解,Prepared(准备好的, 精制的),从这里可以知道PreparedStatement是预先编译的语句,而Statement则不是预先编译的,在DBMS中处理管理中Statement是要进行语法、语义的,而PreparedStatement则不要。 2:
PrepareStatement中执行的SQL语句中是可以带参数的,而Statement则不可以。
比如:
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET SALARY = ? WHERE ID = ?");
pstmt.setBigDecimal(1, 153833.00);
pstmt.setInt(2, 110592);
pstmt. executeUpdate(); 3:
当处理批量SQL语句时,这个时候就可以体现PrepareStatement的优势,由于采用Cache机制,则预先编译的语句,就会放在Cache中,下次执行相同SQL语句时,则可以直接从Cache中取出来。 关于PreparedStatement 预编译的语句具体是放在哪儿?为什么能提升性能?先看看oracle的sql执行细节:oracle 执行sql时,首先要分析sql生成查询计划,具体有:分析sql的合法性(到数据库schema中查询),决定使用某个的哪段索引(好像是这样说的)... ...,然后在第一次查询时,用物理读,其后相同的查询计划都是逻辑读,是到缓存里面读。
PreparedStatement是不是有利于oracle生成查询计划,或许还有别的帮助,所以提高了性能。
但有一点是肯定的,PreparedStatement一定需要driver具体实现才行,Prepared是缓存在数据库端的。所以说,PreparedStatement预编译的sql语句是放在数据库端的缓存里面,而放到缓存,有利于sql生成查询计划。
批处理的时候preparedstatement比statement快些、
我只知道 用PreparedStatement可以执行类似这样的insert into usertb values(?,?,?)
中间的?可以动态的传值。
批处理的时候preparedstatement比statement快些