对oracle数据库进行批处理操作,事务处理

1  进行批处理操作     批处理的特点就是所有的操作一次性的向数据库发出


public class Test {
/**
* 下面基本上是固定的一些代码(本例并未建立数据库)
* @param args
* @throws Exception
*/
public static final String DBDRIVER="oracle.jdbc.driver.OracleDriver";
/**
* jdbc:oracle:thin:@localhost:1521:orcl是java程序通过jdbc连接oracle数据库的一种方式。
解释:
jdbc:代表以jdbc的方式连接;
oracle:表示连接的是oracle数据库;
thin:表示连接时采用thin模式(oracle中有两种模式);
@表示地址;
localhost:1521:orcl中localhost代表本地数据库,1521代表本地数据库端口号,orcl代表本地数据库的sid。sid一般和数据库名称一样
关于thin的解释:
thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracle客户端,只要求classpath中包含jdbc驱动的jar包就行。
thin就是纯粹用Java写的ORACLE数据库访问接口。
oci是一种胖客户端的连接方式,即采用这种连接方式需要安装oracle客户端。oci是Oracle
 Call 
Interface的首字母缩写,是ORACLE公司提供了访问接口,就是使用Java来调用本机的Oracle客户端,然后再访问数据库,优点是速度 
快,但是需要安装和配置数据库。
*/
public static final String DBURL="jdbc:oracle:thin:@localhost:1521:orcl";
public static final String DBUSER="scott";
public static final String DBPASSWORD="tiger";



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

Class.forName(DBDRIVER);
Connection conn=DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
//一定注意like旁边的空格,因为name like ‘%李%’;这是有空格的,所以双引号中的like也要有空格。
String sql="insert into member(mid,name) values (myseq.nextval,?)";
PreparedStatement ps=conn.prepareStatement(sql);
for(int x=0;x<10;x++)
{
ps.setInt(1, x);
ps.addBatch();//将此操作追加到批处理之中

}
int result[]=ps.executeBatch();
System.out.println(Arrays.toString(result));
      conn.close();
}


}




2 事务处理
事务保证的是所有的更新操作要么一起成功,要么一起失败,现在对于给定的批处理里面一次性的执行多条更新操作,那么中间有一次失败了怎么样呢?
结果是错误语句之前的语句执行了,但是之后的语句未执行。如果这些更新属于同一个业务的处理操作,那么此时的数据就乱了。所以为了保证整体的成功,所有的操作要么一起成功,要么一起
失败。就可以利用jdbc原生(数据库)事务进行解决,而事务的控制方法都在Connection接口里面:
(1)设置是否自动提交 public void setAutoCommit(boolean autoCommit) throws SQLException //要想进行事务处理,必须关掉自动提交
(2)提交事务  public void commit() throws SQLException
(3) 回滚事务 public void rollback() throws SQLException

你可能感兴趣的:(java)