您的位置:首页 > 数据库

Statement及PreparedStatement执行多个sql

2016-07-08 11:16 344 查看
[align=left] 这两个对象的区别:[/align]
[align=left]1.Statement它更适合执行不同sql的批处理,它没有提供预处理功能,性能比较低。[/align]
[align=left]2.PreparedStatement它适合执行相同的批处理,它提供了预处理功能,属性比较高。 [/align]
[align=left] /**[/align]
[align=left] * @param args[/align]
[align=left] * @throws SQLException[/align]
[align=left] * @throws ClassNotFoundException[/align]
[align=left] */[/align]
[align=left] public static void main(String[] args) throws ClassNotFoundException,[/align]
[align=left] SQLException {[/align]
[align=left] // 定义sql 语句[/align]
[align=left] String sql1 = "create table person(id int,name varchar(20))";[/align]
[align=left] String sql2 = "insert into person values(1,'tom')";[/align]
[align=left] String sql3 = "insert into person values(2,'fox')";[/align]
[align=left] String sql4 = "insert into person values(3,'tony')";[/align]
[align=left] String sql5 = "update person set name='张三' where id=1";[/align]
[align=left] String sql6 = "delete from person where id=3";[/align]
[align=left] [/align]
[align=left] Connection conn = jdbcUtils.getConnection();[/align]
[align=left] Statement st = conn.createStatement();[/align]
[align=left] [/align]
[align=left] // 添加批处理sql[/align]
[align=left] st.addBatch(sql1);[/align]
[align=left] st.addBatch(sql2);[/align]
[align=left] st.addBatch(sql3);[/align]
[align=left] st.addBatch(sql4);[/align]
[align=left] st.addBatch(sql5);[/align]
[align=left] st.addBatch(sql6);[/align]
[align=left] [/align]
[align=left] // 执行批处理sql[/align]
[align=left] st.executeBatch();[/align]
[align=left] st.clearBatch();[/align]
[align=left] st.close();[/align]
[align=left] conn.close();[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]使用版本高一点的 jdbc的jar包时加入参数可开启缓存在url中加参数:[/align]
[align=left]?useServerPrepStmts=true&cachePrepStmts=true&rewriteBatchedStatements=true[/align]

[align=left] /**[/align]
[align=left] * @param args[/align]
[align=left] * @throws SQLException[/align]
[align=left] * @throws ClassNotFoundException[/align]
[align=left] */[/align]
[align=left] public static void main(String[] args) throws ClassNotFoundException,[/align]
[align=left] SQLException {[/align]
[align=left] String sqlString = "insert into person values(?,?)";[/align]
[align=left] Connection conn = jdbcUtils. getConnection();[/align]
[align=left] PreparedStatement pst = conn.prepareStatement(sqlString);[/align]
[align=left] long l = System. currentTimeMillis();[/align]
[align=left] for ( int i = 0; i < 10000; i++) {[/align]
[align=left] pst.setInt(1, i);[/align]
[align=left] pst.setString(2, "name" + i);[/align]
[align=left] pst.addBatch();[/align]
[align=left] if (i % 1000 == 0) {[/align]
[align=left] pst.executeBatch();[/align]
[align=left] pst.clearBatch(); // 清空缓存[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] pst.executeBatch();[/align]
[align=left] pst.close();[/align]
[align=left] conn.close();[/align]
[align=left] System. out.println(System. currentTimeMillis() - l);[/align]

[align=left] }[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: