PreparedStatement 和 Statement 实现基本的批处理
批处理:若需要对数据库进行多步操作,则就没必要每次都和数据库进行一次通信,这样很消耗资源和时间。则需要将操作进行批处理;
Statement方式来实现批处理
优点:
可以包含结构不同的sql语句
缺点:
不能防止sql注入攻击
没有预编译机制, 效率低下
如果发送的sql语句主干部分相同, 主干部分每次都需要写.
PreparedStatement方式实现批处理
优点:
可以防止sql注入攻击
采用预编译机制, 效率高
如果发送的sql语句主干部分相同, 主干部分只需要写一次, 每次发送的只是参数部分.
缺点:
包含的sql语句的主干部分必须相同
PreparedStatement 实现基本的批处理:
1 public static void main(String[] args) { 2 Connection conn = null; 3 Statement stat = null; 4 PreparedStatement ps = null; 5 6 try { 7 Class.forName("com.mysql.jdbc.Driver"); 8 conn = DriverManager.getConnection("jdbc:mysql:///mydb5","root","admin"); 9 //开始事务 10 conn.setAutoCommit(false); 11 String sql = "insert into tb_batch values (null,?)"; 12 ps = conn.prepareStatement(sql); 13 for(int i=2000;i<3000;i++){ 14 ps.setString(1, "tong"+i); 15 ps.addBatch(); 16 } 17 ps.executeBatch(); 18 //提交事务 19 conn.commit(); 20 System.out.println("完成???????????"); 21 22 } catch (Exception e) { 23 e.printStackTrace(); 24 }finally{ 25 JDBCutils.closeResou(conn, ps, null); 26 } 27 28 29 }
Statement 实现基本的批处理:
1 public static void main(String[] args) { 2 3 Connection conn = null; 4 Statement stat = null; 5 //注册驱动和连接数据库 6 conn = JDBCutils.getConn(); 7 try { 8 stat = conn.createStatement(); 9 stat.addBatch("drop database if exists mydb5"); 10 stat.addBatch("create database mydb5"); 11 stat.addBatch("use mydb5"); 12 stat.addBatch("create table tb_batch(id int primary key auto_increment, name varchar(20))"); 13 stat.addBatch("insert into tb_batch values(null,'a')"); 14 stat.addBatch("insert into tb_batch values(null,'b')"); 15 stat.addBatch("insert into tb_batch values(null,'c')"); 16 stat.executeBatch(); 17 System.out.println("完成"); 18 19 } catch (Exception e) { 20 e.printStackTrace(); 21 }finally{ 22 JDBCutils.closeResou(conn, stat, null); 23 } 24 25 26 }
注:JDBCutils.closeResou这个是自定义的一个JDBC工具类。主要是用来关闭资源和建立连接。
http://www.cnblogs.com/tongxuping/p/6880315.html ---> JDBCutils自定义的工具类包
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!