日期:2014-05-16 浏览次数:20506 次
1、事务处理
?? 1)事务和锁
????????? 当执行事务操作时(dml语句),oracle 会在被作用的表上加锁,防止其他用户改表的结构,只有当一个事务执行完了
????? 锁解开了,其他用户才可以对这个表进行操作,这对于用户来说十分重要,避免同时操作同一个表。
?? 2)回退事务
????????? 保存点(savepoint)是事务中的一点,用于取消部分事务,当结束事务后,会自动的删除该事务所定义的所有保存点。
????? 当执行rollback时,通过指定保存点可以回退到指定的点,这对于操作人员来说作用十分大,因为当数据出错时,可以采用
????? 回退事务,恢复到指定的状态。
????????? 设置保存点: savepoint a1; 回滚到指定的保存点:rollback to a1;? 取消所有事务:rollback
?? 3) 提交事务
????????? 当执行commit语句可以提交事务,当执行了commit语句后,会确认事务的变化、结束事务、删除保存点、释放锁,
????? 当使用commit语句结束事务之后,其他会话将可以查看到事务变化后的新数据。
?? 4) 只读事务
????????? 当只读事务开启后,查看的数据将不再显示后来更新的数据。这种事务在进行数据统计时最常用,这样可以避免统计期间,
????? 后来更新的数据对统计结果的干扰。
????????? 设置只读事务:set transaction read only
2、java操作数据库
? ? 1)采用jdbc_odbc桥接方式,这个采用的是系统内置的驱动,不需要另外导入驱动包。
???????? 装载驱动类:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
???????? 连接url:? jdbc:odbc:DStest,其中DSTest为自己在本地配置的数据源。
???????? 创建数据源方法如下:
???????? (1) 打开控制面版,选择管理工具
??????? ???
?????????????
??????? ?(2)选择数据源
??????????????????
??????????????
???????? (3)选择添加按钮
???????????????
???????????
????? (4)在安装oracle的时候,系统自动注册了oracle数据源,点击oracle in?OraHome92
???????????
?
????? (5)Data Source Name:随便取一个,Description:可以不填,TNS Service Name :点击下拉框,
?????????? 选择安装数据库时,创建的数据库实例。
?????????? 信息填完后,可以点击Test Connection 按钮测试是否链接成功。
???????????
?????????
????? (6)java操作代码
?????????
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class test { public static void main(String[] args) { try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn=DriverManager.getConnection("jdbc:odbc:DStest","scott","netjava"); Statement st=conn.createStatement(); ResultSet set=st.executeQuery("select * from emp"); while(set.next()){ System.out.println("用户名:"+set.getString("ename")); } }catch (Exception e) { e.printStackTrace(); } } }
???? (7) 执行结果
???????
??????
?
?
?? 2)采用jdbc方式,这个需要导入oracle驱动包。
??????? 驱动类:Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
??????? 连接url:? jdbc:oracle:thin:@localhost:1521:oracle
???????
???3)举例说明使用事务的必要性,比如在银行的转账系统中,从一个用户的余额中减去1000元,在另外一个用户增加
??????? 1000员,如果执行减法的语句执行成功,而执行加法的语句没有成功的话,那么意味着用户的钱凭空消失了,或者
??????? 反过来,那么银行就亏大了,这样的事情在现实生活中肯定是不可以让他发生的。要解决这样的问题,那么就得用到
??????? 事务处理机制,开启事务后,所有的sql语句,要么全部成功,要么全部失败。
???4)采用jdbc来执行事务处理实现
??????? java代码:
???????
package com.champion.oracle; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; /** * 连接oracle操作 * * @author: 通信0905--沈冠军 * @time: 2011-5-7 */ public class Con