1.获取connection对象
Connection conn = JdbcUtils.getConnection();
2.获取statement对象
Statement st = conn.createStatement();
3.使用for循环一次插入多个sql语句
//插入2000条
for(int i = 1;i<=2000;i++) {
String sql = "insert into student(id,name,age) values('"+i+"','张三',20)";
//将sql语句添加到缓存中
st.addBatch(sql);
if(i%500 ==0) {
//每500条发送一次数据
st.executeBatch();
//发送过后清空缓存中的数据
st.clearBatch();
}
}
4.提交数据
conn.commit();
使用statement对象的优缺点:
优点:可以向数据库一次性发送多条不同sql(或者是相同的sql语句,只是参数不同),大大的提升了效率
缺点:当一次发送不同的sql语句时,需要多次编写sql,对程序员来说是一种负担
1.获取statement对象
connection conn = JdbcUtils.getConnection();
2.编写sql语句
String str = "insert into stu(id,name,age) values(?,?,?)";
3.对sql语句进行预编译
PreparedStatemnt ps = conn.preparedStatement(sql);
4.使用for循环一次性插入多个占位符(数据)
//插入2000条
for(int i = 1;i<=2000;i++) {
ps.setInt(1,i);
ps.setString(2,"张三");
ps.setString(3,20);
//将sql语句添加到缓存中
ps.addBatch();
if(i%500 ==0) {
//每500条发送一次数据
ps.executeBatch();
//发送过后清空缓存中的数据
ps.clearBatch();
}
}
5.提交数据
conn.commit();
使用preparedstatement对象的优缺点:
优点:使用预编译,效率比statement效率更高
缺点:只能应用在sql语句相同,但参数不同的批处理中。因此此种形式的批处理经常用于在同一个表中批量插入数据,或批量更新表的数据。
两种操作的对比:
1.statement可以一次性插入不同的sql,也能应用在sql语句相同,参数不同的批处理当中,而perparedstatement只能应用在sql语句相同,但是参数不同的批处理当中。
2.在都应用在sql语句相同,而参数不用的情况下,预编译的处理比statement效率更高