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) {
   // TODO Auto-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) {
   // TODO Auto-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 into authors(firstName,lastName) values(?,?)")
//这个后面一定有sql语句,并且里面的参数是用?表示的。
//然后用pstmt.setString(1,"fegor")来设定它的值,1表示第1个问号的位置,"fegor",表示我们要加的值
//最后用pstmt.executeUpdate()去执行。