statement与preparedstatement的区别?及作用?
解决方案 »
- 关于java连接mysql创建表
- 关于String构造的不解
- 内部网页更新怎样能让客户打开网页不用点刷新就能看到最新的网页内容
- 恳请大家帮忙
- 是一个程序只有一个Graphics对象还是一个面板只有一个Graphics对象?
- 请教高手:如何把“毫秒格式”的时间转换成 yyyy-MM-dd HH:mm:ss 的格式?
- 在线等,求《java2从入门到精通》一书的源码。
- JTable问题:/50相赠,在线等....
- 有C语言的基础,初学java应该看哪本教程?
- JTextPane简单问题!!110分!请进-----
- 关于执行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快些