java sql 批处理

本文介绍了Java中使用JDBC进行SQL批处理的方法,包括无参数和带参数的批处理示例,展示了如何通过Statement和PreparedStatement执行批量操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java SQL批处理

(2010-04-08 16:36:11)
标签:

杂谈

分类:计算机

package soyatec.com.cn.test;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCBatchProcessing {

public static void main(String[] args) throws SQLException{
   try {
   Class.forName("org.gjt.mm.mysql.Driver");
   } catch(ClassNotFoundException e) {
    // TODOAuto-generated catch block
   e.printStackTrace();
   }
   String url ="jdbc:mysql://localhost/person";
   java.sql.Connection conn =null;
   try {
    conn =DriverManager.getConnection(url, "root", "shong");
   } catch (SQLException e){
    // TODOAuto-generated catch block
   e.printStackTrace();
   }

   //无参,添加案例
  //    Statement stmt = conn.createStatement();
  //    stmt.addBatch("insert into person(id, name)values(1,'shong')");
  //    stmt.addBatch("insert into person(id, name)values(2,\"hacks\")");
   //
  //    stmt.executeBatch();
  //    stmt.close();
  //    conn.close();

   //带参,添加案例
   PreparedStatement ps =conn
    .prepareStatement("insert into person(id, name) values(?,?)");

   ps.setInt(1,3);//设置参数
   ps.setString(2,"elise");
   ps.addBatch();//把语句加入批处理队列

   ps.setInt(1, 4);
   ps.setString(2,"plegall");
   ps.addBatch();

   ps.setInt(1, 5);
   ps.setString(2, "mike");
   ps.addBatch();

   ps.executeBatch();//执行批处理

   ps.close(); //最后关闭
   conn.close();
}
//总结:
//1.stmt=conn.createStatement()这个后面的括号里面一般没有东西!!!
//2.pstmt=conn.prepareStament("insert intoauthors(firstName,lastName) values(?,?)")
//这个后面一定有sql语句,并且里面的参数是用?表示的。
//然后用pstmt.setString(1,"fegor")来设定它的值,1表示第1个问号的位置,"fegor",表示我们要加的值
//最后用pstmt.executeUpdate()去执行。

 

使用批量处理功能涉及下面的两个方法:
  · addBatch(String) 方法
  · executeBatch方法

method 1:

关于Statement的简单范例可以是:

  Statement stmt =conn.createStatement();
  stmt.insert("DELETE FROM Users");
  stmt.insert("INSERT INTO Users VALUES("rod", 37,"circle")");
  stmt.insert("INSERT INTO Users VALUES("jane", 33,"triangle")");
  stmt.insert("INSERT INTO Users VALUES("freddy", 29,"square")");
  int[] counts = stmt.executeBatch();


method2:

PreparedStatement有些不同,它只能处理一部分SQL语法,但是可以有很多参数,因此重写上面的范例的一部分就可以得到下面的结果:

PreparedStatementstmt = conn.prepareStatement("INSERT INTOUserinfo(username,password) VALUES(?,?)");
User[ ] users = addUser();//取得 要插入的数据的数组
for(int i=0; i<users.length;i++){
stmt.setString(1, users[i].getUsername());
stmt.setString(2, users[i].getPassword());
stmt.addBatch( );
}
int[ ] counts = stmt.executeBatch();

1

阅读 (2246) 评论 (0) 收藏 (0) 转载 (0) 喜欢 打印 举报
已投稿到:

转载列表:

    转载

    转载是分享博文的一种常用方式...

      发评论

      登录名: 密码: 找回密码 注册

      昵   称:

         

      按住左边滑块,拖动完成上方拼图
      点击上图按钮并沿道路拖动到终点处
      移动到此开始验证

      发评论

      以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值