同样的代码:




1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21




​public​​ ​​class​​ ​​TestBatch {​


​public​​ ​​static​​ ​​void​​ ​​main(String[] args) ​​​​throws​​ ​​SQLException, ClassNotFoundException {​


​//Class.forName("oracle.jdbc.driver.OracleDriver");​


​//Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","guojje","guojje");​


 


​Class.forName(​​​​"com.mysql.jdbc.Driver"​​​​);​


​Connection conn = DriverManager.getConnection(​​​​"jdbc:mysql://localhost:3306/test"​​​​,​​​​"root"​​​​,​​​​""​​​​);​


​String sql = ​​​​"insert into book (kind, name) values (?,?)"​​​​;​


​PreparedStatement pstmt = conn.prepareStatement(sql);​


​pstmt.setString(​​​​1​​​​, ​​​​"java"​​​​);​


​pstmt.setString(​​​​2​​​​, ​​​​"jjjj"​​​​);​


​pstmt.addBatch();   ​


​pstmt.setString(​​​​1​​​​, ​​​​"ccc"​​​​);​


​pstmt.setString(​​​​2​​​​, ​​​​"dddd"​​​​);​


​pstmt.addBatch();   ​


​//添加一次静态SQL​


​pstmt.addBatch(​​​​"update book set kind = 'JAVA' where kind='java'"​​​​);​


​//批量执行预定义SQL​


​pstmt.executeBatch(); ​


​}​


​}​



MySQL是通过,对于Oracle则会报不支持特性, 原因在于addBatch动态sql之后, 

不能再addBatch静态sql. 已此记录。