三丨继Batch之Transaction Google翻译
缘由:如A转账予B,那么JDBC至少要操作2条UPDATE语句(A减B加),Transaction就是为了保证这两条语句必须同时执行成功或者同时执行失败。
package com.qsuron.test;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import com.qsuron.util.DB;
public class Test6 {
public static void main(String[] args) throws SQLException {
Connection conn = DB.getConnection();
Statement stmt = DB.getStatement(conn);
try {
conn.setAutoCommit(false);
//将自动提交设置为false,将多条语句积累到一起
stmt.addBatch("insert into student values ('1213400135','1','Q');");
stmt.addBatch("insert into student values ('1213400136','1','Q');");
stmt.addBatch("insert into student values ('1213400134','1','Q');");
stmt.executeBatch();
conn.commit();
//执行
conn.setAutoCommit(true);
//重置自动提交
} catch (Exception e) {
//如果抓到异常就现场恢复
if(conn!=null){
conn.rollback();
//数据回滚
System.out.println("Exception:Rollback!");
conn.setAutoCommit(true);
}
}
DB.close();
}
} 测试方法:让中间的语句的id发生主键唯一错误。
四丨ResultSet 结果集
1.前后滚动机制
package com.qsuron.test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.qsuron.util.DB;
public class Test7 {
public static void main(String[] args) throws SQLException {
Connection conn = DB.getConnection();
Statement stmt = DB.getStatement(conn,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = DB.query(stmt,"select * from student order by id;");
rs.last();
System.out.println("当前行数:"+rs.getRow());
System.out.println(rs.getString(1));
rs.previous();
System.out.println(rs.getString(1));
rs.absolute(7);
System.out.println(rs.getString(1));
DB.close();
}
}
2.JDBC之ResultSet对象-注意事项(点击前往)
转载请注明出处:blog.csdn.net/qsuron 小树博客(qsuron)