可惜我没运行成功,说
java.sql.SQLException: No suitable driver found for jdbc.odbc:testConnectOracle
at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.sp.TestOracle.main(TestOracle.java:18) 不知道为什么。。。
接下来讲解用JDBC的方式连接Oracle Java代码
1. package com.sp; 2.
3. import java.sql.Connection; 4. import java.sql.DriverManager; 5. import java.sql.ResultSet; 6. import java.sql.Statement; 7.
8. //使用 jdbc连接oracle 9. public class TestOracle2 { 10.
11. public static void main(String[] args) { 12. try { 13.
14. // 1.加载驱动
15. Class.forName(\ 16.
17. // 2.得到连接
18. Connection ct = DriverManager.getConnection 19.
20.(\21.
22. // 从下面开始,和SQL Server一模一样 23. Statement sm = ct.createStatement();
24. ResultSet rs = sm.executeQuery(\;
25. while (rs.next()) { 26. //用户名
27. System.out.println(\用户名: \2));
28. //默认是从1开始编号的 29. }
30. } catch (Exception e) { 31. e.printStackTrace();
32. } 33. } 34.}
记得要把驱动包引入,classes12.jar
运行,。。。。 再次可惜,我还是没运行成功,错误是:
java.sql.SQLException: Io 异常: The Network Adapter could not establish the
connection
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:334) at
oracle.jdbc.driver.OracleConnection.
(OracleDriver.java:521)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:325) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.sp.TestOracle2.main(TestOracle2.java:18) 我也不知道为什么。。。 幽怨了。。
接下来建个web project,来测试oracle的分页,挺麻烦,不记录了。。
在oracle中操作数据 - 使用特定格式插入日期值 使用 to_date函数
请大家思考: 如何插入列带有日期的表,并按照年-月-日的格式插入? insert into emp values (9998,
'xiaohong', 'MANAGER',7782,to_date('1988-12- 12', 'yyyy-mm-dd'), 78.9, 55.33, 10); 注意:
insert into emp values (9998,'xiaohong','MANAGER', 7782,'12-12月-1988', 78.9, 55.33,10); 这句语句是可以成功运行的
使用子查询插入数据 介绍
当使用valus子句时,一次只能插入一行数据,当使用子查询插入数据时,一条inset语句可以插入大量的数据。当处理行迁移或者装载外部表的数据到数据库时,可以使用子查询来插入数据。
把emp表中10号部门的数据导入到新表中 create table kkk(myId number(4), myName varchar2(50), myDept number(5)); insert into kkk (myId, myName, myDept) select empno, ename, deptno from emp where deptno = 10;
介绍
使用update语句更新数据时,既可以使用表达式或者数值直接修改数据,也可以使用子查询修改 数据。
问题:希望员工SCOTT的岗位、工资、补助与SMITH员工一样。
update emp set(job, sal, comm)=(select job, sal, comm from emp where ename='SMITH') where ename='SCOTT';
八:oracle中事务处理
什么是事务
事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml(数据操作语言,增删改,没有查询)语句要么全部成功,要么全部失败。 如:网上转账就是典型的要用事务来处理,用于保证数据的一致性。 dml 数据操作语言
银行转账、QQ申请、车票购买 事务和锁
当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其它用户修改表的结构。这里对我们的用户来来讲是非常重要的。
.....其它进程排序,知道1号进程完成,锁打开,2号进程进入。依次进行,如果有进程级别较高的,可以插队。
提交事务
当执行用commit语句可以提交事务。当执行了commit语句之后,会确认事务的变化、结束事务。删除保存点、释放锁,当使用commit语句结束事务之后,其它会话将可以查看到事务变化后的新数据。 保存点就是为回退做的。保存点的个数没有限制
回退事务
在介绍回退事务前,我们先介绍一下保存点(savepoint)的概念和作用。保存点是事务中的一点。用于取消部分事务,当结束事务时,会自动的删除该事务所定义的所有保存点。当执行rollback时,通过指定保存点可以回退到指定的点,这里我们作图说明。
事务的几个重要操作
1.设置保存点 savepoint a 2.取消部分事务 rollback to a 3.取消全部事务 rollback
注意:这个回退事务,必须是没有commit前使用的;如果事务提交了,那么无论你刚才做了多少个保存点,都统统没有。
如果没有手动执行commit,而是exit了,那么会自动提交
java程序中如何使用事务
在java操作数据库时,为了保证数据的一致性,比如账户操作(1)从一个账户中减掉10$(2)在另一个账户上加入10$,我们看看如何使用事务? Java代码
1. package com.sp; 2.
3. import java.sql.Connection; 4. import java.sql.DriverManager; 5. import java.sql.ResultSet; 6. import java.sql.Statement; 7.
8. public class TestTrans { 9.
10. public static void main(String[] args) { 11. try { 12.
13. // 1.加载驱动
14. Class.forName(\ 15.
16. // 2.得到连接
17. Connection ct = DriverManager.getConnection( 18. \cott\19.
20. Statement sm = ct.createStatement(); 21.
22. // 从scott的sal中减去100
23. sm.executeUpdate(\ename='SCOTT'\24.
25. int i = 7 / 0; 26.
27. // 给smith的sal加上100
28. sm.executeUpdate(\ename='SMITH'\29.
30. // 关闭打开的资源
31. sm.close(); 32. ct.close();
33. } catch (Exception e) { 34. e.printStackTrace(); 35. } 36.
37. } 38. 39.}
运行,会出现异常,查看数据库,SCOTT的sal减了100,但是SMITH的sal却不变,很可怕。。。
我们怎样才能保证,这两个操作要么同时成功,要么同时失败呢? Java代码
1. package com.sp; 2.
3. import java.sql.Connection; 4. import java.sql.DriverManager; 5. import java.sql.SQLException; 6. import java.sql.Statement; 7.
8. public class TestTrans { 9.
10. public static void main(String[] args) { 11. Connection ct = null; 12. try {
13. // 1.加载驱动
14. Class.forName(\ 15.
16. // 2.得到连接
17. ct = DriverManager.getConnection(
18. \cott\19.
20. // 加入事务处理
21. ct.setAutoCommit(false);// 设置不能默认提交 22.
23. Statement sm = ct.createStatement(); 24.
25. // 从scott的sal中减去100
26. sm.executeUpdate(\ename='SCOTT'\