JDBC批处理预处理语句

时间:2015-09-18 10:36:35

标签: java mysql jdbc

我正在处理批量准备声明。

import java.sql.*;
import java.util.Arrays;

public class QryBtch {

       static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
       static final String DB_URL = "jdbc:mysql://localhost/test";

       static final String USER = "root";
       static final String PASS = "roottoor";

    public static void main(String[] args) {
           Connection conn = null;
           int[] results = null;
           try{
              Class.forName("com.mysql.jdbc.Driver");

              System.out.println("Connecting to database...");
              conn = DriverManager.getConnection(DB_URL,USER,PASS);
              PreparedStatement ps = null;        
              String query = "insert into mytable (Emp_ID, Emp_Name) values (?,?)";
              ps = conn.prepareStatement(query);
              String name1 = "Name1";
              String name2="Big Big Name Name 1"; //longer than column length            
              String name3="Name2";
              ps.setInt(1, 1);
              ps.setString(2, name1);
              ps.addBatch();
              ps.setInt(1, 2);
              ps.setString(2, name2);
              ps.addBatch();
              ps.setInt(1, 3);
              ps.setString(2, name3);
              ps.addBatch();
              results = ps.executeBatch(); 

              System.out.println(Arrays.toString(results));
              conn.close();
           }catch(SQLException se){

              System.out.println(Arrays.toString(results));
              se.printStackTrace();
           }catch(Exception e){

              e.printStackTrace();
           }finally{
              try{
                 if(conn!=null)
                    conn.close();
              }catch(SQLException se){
                 se.printStackTrace();
              }
           }
           System.out.println("Goodbye!");
    }
}

我正在尝试插入名称定义为8个字符的表中。正如所料,我的第二个陈述失败了。是否可以跟踪失败的语句或错误处理的绑定值。

0 个答案:

没有答案