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

你可能感兴趣的:(transaction)