WEB开发网
开发学院软件开发Java 执行SQL Batch 阅读

执行SQL Batch

 2007-12-23 12:35:34 来源:WEB开发网   
核心提示:/*Database PRogramming with JDBC and java, Second EditionBy George ReeseISBN: 1-56592-616-1Publisher: O'Reilly*/import java.sql.Connection;import java.sql.D
/*

Database PRogramming with JDBC and java, Second Edition
By George Reese
ISBN: 1-56592-616-1

Publisher: O'Reilly

*/


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * Example 4.1.
 */
public class Batch {
 static public void main(String[] args) {
  Connection conn = null;

  try {
   ArrayList breakable = new ArrayList();
   PreparedStatement stmt;
   Iterator users;
   ResultSet rs;

   Class.forName(args[0]).newInstance();
   conn = DriverManager.getConnection(args[1], args[2], args[3]);
   stmt = conn.prepareStatement("SELECT user_id, passWord "
     + "FROM user");
   rs = stmt.executeQuery();
   while (rs.next()) {
    String uid = rs.getString(1);
    String pw = rs.getString(2);

    // Assume PasswordCracker is some class that provides
    // a single static method called crack() that attempts
    // to run password cracking routines on the password
    //        if( PasswordCracker.crack(uid, pw) ) {
    //         breakable.add(uid);
    //      }
   }
   stmt.close();
   if (breakable.size() < 1) {
    return;
   }
   stmt = conn.prepareStatement("UPDATE user "
     + "SET bad_password = 'Y' " + "WHERE uid = ?");
   users = breakable.iterator();
   while (users.hasNext()) {
    String uid = (String) users.next();

    stmt.setString(1, uid);
    stmt.addBatch();
   }
   stmt.executeBatch();
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (conn != null) {
    try {
     conn.close();
    } catch (Exception e) {
    }
   }
  }
 }
}

(出处:http://www.cncms.com)


Tags:执行 SQL Batch

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接