java jdbc 事务管理,JDBC中的事务管理

交易代表一个工作单元。

ACID属性很好地描述了事务管理。 ACID代表原子性, 一致性, 隔离性和持久性。

原子性意味着全部成功或没有成功。

一致性确保将数据库从一种一致状态带到另一种一致状态。

隔离确保事务与其他事务隔离。

持久性是指一旦事务已提交, 即使在发生错误, 断电等情况下, 事务也将保持不变。

交易管理的优势

快速性能由于提交时数据库被命中, 因此可以提高性能。

tx-1.jpg

在JDBC中, Connection接口提供了管理事务的方法。

方法

描述

void setAutoCommit(boolean status)

默认情况下为true, 表示每个事务均默认提交。

void commit()

提交事务。

void rollback()

取消交易。

使用Statement在jdbc中进行事务管理的简单示例

让我们看一下使用Statement进行事务管理的简单示例。

import java.sql.*;

class FetchRecords{

public static void main(String args[])throws Exception{

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

Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "system", "oracle");

con.setAutoCommit(false);

Statement stmt=con.createStatement();

stmt.executeUpdate("insert into user420 values(190, 'abhi', 40000)");

stmt.executeUpdate("insert into user420 values(191, 'umesh', 50000)");

con.commit();

con.close();

}}

如果你看到表emp400, 你将看到已添加2条记录。

使用PreparedStatement在JDBC中进行事务管理的示例

让我们看一下使用PreparedStatement进行事务管理的简单示例。

import java.sql.*;

import java.io.*;

class TM{

public static void main(String args[]){

try{

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

Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "system", "oracle");

con.setAutoCommit(false);

PreparedStatement ps=con.prepareStatement("insert into user420 values(?, ?, ?)");

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

while(true){

System.out.println("enter id");

String s1=br.readLine();

int id=Integer.parseInt(s1);

System.out.println("enter name");

String name=br.readLine();

System.out.println("enter salary");

String s3=br.readLine();

int salary=Integer.parseInt(s3);

ps.setInt(1, id);

ps.setString(2, name);

ps.setInt(3, salary);

ps.executeUpdate();

System.out.println("commit/rollback");

String answer=br.readLine();

if(answer.equals("commit")){

con.commit();

}

if(answer.equals("rollback")){

con.rollback();

}

System.out.println("Want to add more records y/n");

String ans=br.readLine();

if(ans.equals("n")){

break;

}

}

con.commit();

System.out.println("record successfully saved");

con.close();//before closing connection commit() is called

}catch(Exception e){System.out.println(e);}

}}

在按n之前, 它将要求添加更多记录。如果按n, 则提交事务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值