2019独角兽企业重金招聘Python工程师标准>>>
案例:
工具方法:
public static Connection getConnection(){
try {
Class.forName("com.mysql.jdbc.Driver");
ct = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","squirrel","xiaoyang");
} catch (Exception e) {
e.printStackTrace();
}
return ct;
}
/**释放数据库链接资源:注意数据库资源关闭的顺序*/
public static void closeConnection(){
try { //注意关闭数据库资源的先后顺序
if(rs!=null){
rs.close();
}if(ps!=null){
ps.close();
}if(ct!=null){
ct.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
测试方法:
/**
* PreparedStatement批量执行sql
*/
public static void excuteBatchInsertDatabase(){
ct=getConnection();
try {
ct.setAutoCommit(false);
ps=ct.prepareStatement("insert into user(name,passwd,age,gender) values(?,?,?,?)");
ps.setString(1, "BBBB");
ps.setString(2, "BBBB");
ps.setInt(3, 20);
ps.setString(4, "F");
ps.addBatch();
ps.setString(1, "BBBB");
ps.setString(2, "BBBB");
ps.setInt(3, 20);
ps.setString(4, "F");
ps.addBatch();
/**
* 等价于sql语句:
* insert into user(name,passwd,age,gender) values
* ("BBBB","BBBB",20,'F'),
* ("BBBB","BBBB",20,'F');
*/
ps.executeBatch(); //批量执行sql,避免因此单次的insert操作建立多个Connection浪费资源
ct.commit();
} catch (Exception e) {
e.printStackTrace();
try {
ct.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
closeConnection();
}
}
执行excuteBatchInsertDatabase()方法数据库记录:
数据库数据记录表明:sql语句批量执行成功
注意:
批量查询最好交由一个事务组控制,如果出现操作异常可以进行事务回滚,不至于造成部分数据更新部分数据更新失败的尴尬局面,避免你脏数据污染数据库