sql执行过程
jdbc简介
JDBC(Java DataBase Connectivity)是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。
jdbc开发步骤
- 获取连接
- 获取语句执行平台
- 执行sql语句
- 处理结果
- 释放资源
获取连接
String url="jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
String user="root";
String pwd="123456";
//获取连接对象
Connection con=DriverManager.getConnection(url,user,pwd);
获取连接这一步直接使用SPI(Service Provider Interface)机制将驱动类注册入内存。SPI机制在我的另一篇文章中。
获取语句执行平台
有2个执行平台
- PrepareStatement
- Statement
- 量比较小,二者皆差别不大。
- 量比较多,在PreparedStatement预编译空间范围之内,选择PreparedStatement,因为其只预编译一次sql语句。
- 量特别大,使用Statement,因为PrepareStatement的预编译空间有限,当数据量特别大时,会发生异常。
Statement
Statement stat = conn.createStatement();
stat.addBatch("drop database if exists mydb5");
stat.addBatch("create database mydb5");
stat.addBatch("insert into tb_batch values(null,'a')");
stat.addBatch("insert into tb_batch values(null,'bbb')");
stat.addBatch("insert into tb_batch values(null,'cccccc')");
stat.executeBatch();
PrepareStatement
//开始事务
conn.setAutoCommit(false);
String sql = "insert into tb_batch values (null,?)";
PreparedStatement ps = conn.prepareStatement(sql);
for(int i=2000;i<3000;i++){
ps.setString(1, "tong"+i);
ps.addBatch();
}
ps.executeBatch();
//提交事务
conn.commit();
执行sql
ps.executeBatch();
ps.execute();
ps.executeUpdate();
处理结果集
ResultSet rs=s.executeQuery(sql);
while (rs.next()) {
String id = rs.getString(1);
String name = rs.getString(2);
System.out.println(id+" "+name);
}
关闭资源
conn.close();
ps.close();