JDBC 批处理
PreparedStatement 批处理
1、 批处理就是一批一批的处理,而不是一个一个的处理!;
2、 当你有100条SQL语句要执行时,一次向服务器发送一条SQL语句,这么做效率上很差!处理的方案是使用批处理,即一次向服务器发送多条SQL语句,然后由服务器一次性处理;
3、 PreparedStatement的批处理有所不同,因为每个PreparedStatement对象都绑定一条SQL模板所以向PreparedStatement中添加的不是SQL语句,而是给“?”赋值;
4、 示例代码(完整代码见文末):;
5、 结果图:;
源码
package com.wyx;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class JDBCUpdate3
{
public static void main(String[] args)
{
savePersonBatch();
}
public static void savePersonBatch()
{
// 定义oracle数据库的驱动的类
String driverClass = "oracle.jdbc.OracleDriver";
// 定义连接的oracle的url
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
// 用户名
String username = "scott";
// 密码
String password = "tiger";
// 定义Connection连接
Connection conn = null;
// 定义数据库的sql执行对象
PreparedStatement ps = null;
// 定义要执行的sql
String addSql = "insert into person values(personid.nextval,?,?,?)";
try
{
// 注册数据库的驱动程序
Class.forName(driverClass);
// 获得数据库的连接
conn = DriverManager.getConnection(url, username, password);
// 创建sql执行对象
ps = conn.prepareStatement(addSql);
for (int i = 0; i < 100; i++)
{
ps.setString(1, "魏宇轩");
ps.setString(2, "1");
ps.setDate(3, new Date(new java.util.Date().getTime()));
ps.addBatch();
}
ps.executeBatch();
} catch (Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (ps != null)
{
ps.close();
}
if (conn != null)
{
conn.close();
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}
}