个性化阅读
专注于IT技术分析

JDBC中的事务管理

交易代表一个工作单元。

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

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

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

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

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


交易管理的优势

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


jdbc中的事务管理

在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)
未经允许不得转载:srcmini » JDBC中的事务管理

评论 抢沙发

评论前必须登录!