Statement及PreparedStatement执行多个sql

    这两个对象的区别:

1.Statement它更适合执行不同sql的批处理,它没有提供预处理功能,性能比较低。

2.PreparedStatement它适合执行相同的批处理,它提供了预处理功能,属性比较高。

/**

* @param args

* @throws SQLException

* @throws ClassNotFoundException

*/

public static void main(String[] args) throws ClassNotFoundException,

SQLException {

// 定义sql 语句

String sql1 = "create table person(id int,name varchar(20))";

String sql2 = "insert into person values(1,‘tom‘)";

String sql3 = "insert into person values(2,‘fox‘)";

String sql4 = "insert into person values(3,‘tony‘)";

String sql5 = "update person set name=‘张三‘ where id=1";

String sql6 = "delete from person where id=3";

Connection conn = jdbcUtils.getConnection();

Statement st = conn.createStatement();

// 添加批处理sql

st.addBatch(sql1);

st.addBatch(sql2);

st.addBatch(sql3);

st.addBatch(sql4);

st.addBatch(sql5);

st.addBatch(sql6);

// 执行批处理sql

st.executeBatch();

st.clearBatch();

st.close();

conn.close();

}

使用版本高一点的 jdbc的jar包时加入参数可开启缓存在url中加参数:

?useServerPrepStmts=true&cachePrepStmts=true&rewriteBatchedStatements=true

/**

* @param args

* @throws SQLException

* @throws ClassNotFoundException

*/

public static void main(String[] args) throws ClassNotFoundException,

SQLException {

String sqlString = "insert into person values(?,?)";

Connection conn = jdbcUtils. getConnection();

PreparedStatement pst = conn.prepareStatement(sqlString);

long l = System. currentTimeMillis();

for ( int i = 0; i < 10000; i++) {

pst.setInt(1, i);

pst.setString(2, "name" + i);

pst.addBatch();

if (i % 1000 == 0) {

pst.executeBatch();

pst.clearBatch(); // 清空缓存

}

}

pst.executeBatch();

pst.close();

conn.close();

System. out.println(System. currentTimeMillis() - l);

}

时间: 2024-11-06 16:53:02

Statement及PreparedStatement执行多个sql的相关文章

JDBC系列:(3)使用PreparedStatement执行sql语句

执行sql语句的接口 接口 作用 Statement接口 用于执行静态的sql语句 PreparedStatement接口 用于执行预编译sql语句 CallableStatement接口 用于执行存储过程的sql语句(call xxx) PreparedStatement Vs Statement 序号 不同 描述 1 语法不同 PreparedStatement可以使用预编译的sql,而Statment只能使用静态的sql 2 效率不同 PreparedStatement可以使用sql缓存区

Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入? (转)

问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入java.sql.*:这个包. 2.然后加载驱动,创建连接,得到Connection接口的的实现对象,比如对象名叫做conn. 3.然后再用conn对象去创建Statement的实例,方法是:Statement stmt = conn

Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入?

问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入java.sql.*:这个包. 2.然后加载驱动,创建连接,得到Connection接口的的实现对象,比如对象名叫做conn. 3.然后再用conn对象去创建Statement的实例,方法是:Statement stmt = conn

PreparedStatement执行sql語句

import com.loaderman.util.JdbcUtil; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import org.junit.Test; /** * PreparedStatement執行sql語句 * */ public class Demo1 { /** * 增加 */ @Test public void testInsert() {

使用JDBC分别利用Statement和PreparedStatement来对MySQL数据库进行简单的增删改查以及SQL注入的原理

一.MySQL数据库的下载及安装 https://www.mysql.com/ 点击DOWNLOADS,拉到页面底部,找到MySQL Community(GPL)Downloads,点击 选择下图中的MySQL Community Server 选择想要的版本进行下载 之后的步骤,因为本人已经安装过MySQL数据库,而卸载重装会比较麻烦,卸载不干净会导致新的装不上,所以可以参考下面的博客,因为官网的改动,前面的部分已经与该博客不符,按照本人在上面的介绍寻找即可 https://blog.csdn

JDBC中的Statement和PreparedStatement的区别

以Oracle为例吧 Statement为一条Sql语句生成执行计划, 如果要执行两条sql语句 select colume from table where colume=1; select colume from table where colume=2; 会生成两个执行计划 一千个查询就生成一千个执行计划! PreparedStatement用于使用绑定变量重用执行计划 select colume from table where colume=:x; 通过set不同数据只需要生成一次执行

Java的Statement、PreparedStatement、PreparedStatement + 批处理 的区别

首先来说一下连接了数据库之后执行的sql语句:通常连接了数据库之后,我们就会获得statement 类的对象或者是他的子类的对象(PreparedStatement类),通过这个对象我们就可以利用它提供的方法来操纵数据库了. Statement提供了三种方法来执行sql语句: 1,execute:可以执行在任何的sql语句,但是比较麻烦,通常我们不会选择这一种的但是如果在不清楚SQL语句的类型时,那只能使用execute来执行sql语句了. 2,executeUpdata:主要用于执行DML与D

【Java编程】JDBC注入攻击-Statement 与 PreparedStatement

在上一篇[Java编程]建立一个简单的JDBC连接-Drivers, Connection, Statement and PreparedStatement我们介绍了如何使用JDBC驱动建立一个简单的连接,并实现使用Statement和PreparedStatement进行数据库查询,本篇blog将接着上篇blog通过SQL注入攻击比较Statement和PreparedStatement.当然这两者还有很多其他方面的不同,在之后的blog中会继续更新. [Statement查询] 1.在DBH

【JDBC】深入理解Statement和PreparedStatement

一.使用Statement而不是PreparedStatement对象 JDBC驱动的最佳化是基于使用的是什么功能. 选择PreparedStatement还是Statement取决于你要怎么使用它们. 对于只执行一次的SQL语句选择Statement是最好的. 相反, 如果SQL语句被多次执行选用PreparedStatement是最好的.PreparedStatement的第一次执行消耗是很高的. 它的性能体现在后面的重复执行. 例如, 假设我使用Employee ID, 使用prepare