jdbc、事务(Transaction)、批处理 回顾
论文写的头疼,回顾一下jdbc,换换脑子
传统的写法:
1.加载驱动类
class.forname("jdbc类的包结构");
2.获得连接
Connection conn=DriverManager.getConnection("url","username","userpwd");
3.获得描述
Ststement stmt =conn.createStstement();
4.执行动作
stmt.executeCreate("sql");
或
ResultSet rs=stmt.executeQuery("sql");
while(rs.next){
}
注意:传统写法安全性不是很好,有可能遭到sql恶意注入的问题
可以将描述替代为
PreparedStatement pstmt=conn.PreparedStatement("sql");
当然此时的sql语句要采用占位符的形式
insert into test(user,name,pwd) values(?,?,?)
同时,在执行动作时,就不必传入“sql”参数
当然在执行动作之前要设置参数
pstmt.setString(1,"");
pstmt.setString(2,"");
pstmt.setInt(3,"");
注意要遵循类型的方式
以上代码不代表具体执行代码,只具备伪代码的功能。
因为有些方法具体怎么拼写,我忘了
凡是涉及到操作数据库,免不了要说说事务(Transaction)了:
事务:保证与数据库操作的过程中,数据的一致性和完整性。
事务的属性:
ACID
即:
Atomic原子性:一堆又一堆的事务操作,要么全都成功,要么全都失败,不存在部分成功或失败的情况
开始事务
一堆事务操作
……
事务结束
Consistency一致性:事务操作前后,数据满足同样的规则
Isolation隔离性:事务内部的数据对外的可见性和可操作性。即不同事务边界内的数据是限制权限的
D稳定性、持久性:事务内部的数据都能够呗正确的持久化
jdbc默认是自动提交的,只要执行动作语句成功,哪怕下一句异常,数据仍然被提交!
jdbc手动设置事务的方法:
首先,关闭jdbc的自动提交功能
conn.setAutoCommit(false);
其次,在执行动作成功后,提交
conn.commit();
最后,如果有异常,事务回滚
conn.rollback();
关于批处理:
即存在多条sql的时候,可通过batch进行批处理
string sql1="……";
string sql2="……";
stmt.addBatch(sql1);
stmt.addBatch(sql2);
完整教程:http://download.csdn.net/detail/u012373717/8874243