/* 
 
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) { 
        } 
      } 
    } 
  } 
} 
 
            
       
  |