建站技术网专注分享网站建设技术,网站建设教程,真正帮你学会做网站技术,轻松解决网站建设过程中遇到的常见问题,为广大站长服务。 收藏本站 | 订阅
域名投资,就来找米网,认准网址:www.zhaomi.cc 专业仿站,就到仿站网:www.fangzhan.org
  站内公告: ·帝国cms教程内容已更新,欢迎关注     ·建站技术网采用阿里云服务器,备案已通    
您当前的位置:首页 > 数据库教程 > Oracle教程

oracle基础教程(第三天)Java操作数据库

时间:2018-02-02 13:08:58  来源:网络收集  整理: 建站技术网 www.jzjsw.com     点击:7次

//使用jdbc_odbc桥连接方式

public class TestOra {

    public static void main(String[] args) {

        try {

            //1.加载驱动

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

            //2.得到连接

            Connection conn = DriverManager.getConnection("jdbc:odbc:testSLQ", "scott", "root123");

            Statement stat = conn.createStatement();

            ResultSet rs = stat.executeQuery("select * from emp");

            while(rs.next()){

                System.out.println("用户名:"+rs.getString(2));

            }

            //关闭打开的资源

            rs.close();

            stat.close();

            conn.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}


在oracle中操作数据-使用子查询插入数据

当使用values子句时,一次只能插入一行数据,当使用子查询插入数据时,一条insert语句可以插入大量的数据。当处理行迁移或者装载外部表的数据到数据库时,可以使用子查询来插入数据。

SQL>insert into kkk (myid,myname,mydept) select empno,ename,deptno from emp where deptno = 10;


在oracle中操作数据-使用子查询更新数据

使用update语句更新数据时,既可以使用表达式或者数值直接修改数据,也可以使用子查询修改数据

希望员工scott的岗位、工资和补助与smith员工一样。

SQL>update emp set (job,sal,comm) = (select job,sal,comm from emp where ename = 'SMITH') where ename = 'SCOTT';


Oracle中的事务处理

什么是事务?

       事务是用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。dml语句就是数据操作语言:包括数据的增加、删除和修改。

       如:网上转账就是典型的要用事务来处理,用以保证数据的一致性。

       当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其他用户改变表的结构。这里对我们用户来讲是非常重要的。事务和锁

提交事务

       执行commit语句可以提交事务,当执行了commit语句后,会确认事务的变化、结束事务、删除保存点、释放锁,当使用commit语句结束事务之后,其它会话将可以查看到当前事务变化后的新数据。

回退事务

       在介绍回退事务前,我们先介绍一下保存点(savepoint)的概念和作用。保存点是事务中的一点,用于取消部分事务,当结束事务时,会自动的删除该事务所定义的保存点。当执行rollback时,通过指定保存点可以回退到执行的点。

事务的几个重要操作

1)设置保存点   savepoint a

2)取消部分事务   rollback to a

3)取消全部事务   rollback

java程序中如何使用事务

在java操作数据库时,为了保证数据的一致性,比如转账操作(1)从一个账户减掉10$(2)在另一个账户上加入10$,我们看看如何使用事务。

public class TestTrans {

    public static void main(String[] args) {

        //事务案例


        Connection conn = null;

        try {

            //1.加载驱动

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

            //2.得到连接

            conn = DriverManager.getConnection("jdbc:odbc:testSLQ", "scott", "root123");

            //加入事务处理

            conn.setAutoCommit(false);


            Statement stat = conn.createStatement();

            //给scott的工资减100

            stat.executeUpdate("update emp set sal = sal-100 where ename='SCOTT'");


            int i = 7/0;


            //给smith的工资加100

            stat.executeUpdate("update emp set sal = sal+100 where ename='SMITH'");


            //提交

            conn.commit();

            //关闭资源

            stat.close();

            conn.close();

        } catch (Exception e) {

            //如果发生异常,回滚

            try {

                conn.rollback();

            } catch (SQLException e1) {

                e1.printStackTrace();

            }

            e.printStackTrace();

        }


    }

}

只读事务

只读事务是指只允许执行查询的操作,而不允许执行任何其它dml操作的事务,使用只读事务可以确保用户只能取得某时间点的数据。假定机票代售点每天18点开始统计今天的销售情况,这时可以使用只读事务。在设置了只读事务后,尽管其它回话可能会提交新的事务,但是只读事务将不会取得最新数据的变化,从而可以保证取得特定时间点的数据信息。

设置只读事务

set transaction read only


sql函数的使用---字符函数

字符函数是oracle中最常用的函数,我们来看看有哪些字符函数:

1.lower(char):将字符串转化为小写的格式

2.upper(char):将字符串转化为大写的格式

3.length(char):返回字符串的长度

4.substr(char,m,n):取字符串的字串   m代表从第几位取,n代表取几个。

5.replace(char1,search_string,replace_string)

将所有员工的名字按小写的方式显示?

SQL> select lower(ename) from emp;

将所有员工的名字按大写的方式显示?

SQL> select upper(ename) from emp;

显示正好为5个字符的员工的姓名?

SQL> select * from emp where length(ename)=5;

显示所有员工姓名的前三个字符?

SQL> select substr(ename,1,3) from emp;

以首字母大写的方式显示所有员工的姓名?

SQL> select upper(substr(ename,1,1))||lower(substr(ename,2)) from emp;

以首字母小写的方式显示所有员工的姓名?

SQL> select lower(substr(ename,1,1))||upper(substr(ename,2)) from emp;

显示所有员工的姓名,用"我是A"替换所有"A"

SQL> select replace(ename,'A','我是A') from emp;

数学函数

数学函数的输入参数和返回值的数据类型都是数字类型的。数学函数包括cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round我们讲最常用的:

round(n,[m])  该函数用于执行四舍五入,如果省掉m,则四舍五入到整数;如果m是正数,则四舍五入到小数点的m位后。如果m是负数,则四舍五入到小数点的m为前。

trunc(n,[m])  该函数用于截取数字。如果省掉m,就截去小数部分,如果m是正数就截取到小数点的m位后,如果m是负数,则截取到小数点的前m位。

mod(m,n)  该函数用于取模(取余)

floor(n)  返回小于或是等于n的最大整数

ceil(n)  返回大于或是等于n的最大整数

对数字的处理,在财务系统或银行系统中用的最多,不同的处理方法,对财务报表有不同的结果。

显示一个月为30天的所有员工的日工资数,忽略余数

SQL> select ename,sal,trunc(sal/30) day_sal from emp;

SQL> select ename,sal,floor(sal/30) day_sal from emp;

在做oracle测试的时候,可以使用dual表,是个虚拟表,一般用来做测试。


日期函数

日期函数用于处理date类型的数据

默认情况下日期格式是dd-mon-yy  即12-7月-78

(1)sysdate:该函数返回系统时间

(2)add_months(d,n):加月份的函数,n为加多少个月

(3)last_day(d):返回指定日期所在月份的最后一天

查找已经入职8个月多的员工?

SQL> select * from emp where sysdate > add_months(hiredate,8);

显示满10年服务年限的员工的姓名和受雇日期?

SQL> select * from emp where sysdate >= add_months(hiredate,120);

对于每个员工,显示其加入公司的天数?

SQL> select trunc(sysdate-hiredate) "入职天数",ename from emp;

找出各月倒数第三天受雇的所有员工?

SQL>  select hiredate,ename from emp where hiredate = last_day(hiredate)-2;


转换函数

用yyyy-mm-dd hh24:mi:ss格式显示入职时间?

to_char

SQL> select ename,hiredate,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;

显示1980年入职的所有员工?

SQL> select * from emp where to_char(hiredate,'yyyy')=1980;

显示所有12月份入职的员工?

SQL> select * from emp where to_char(hiredate,'mm')=12;


系统函数

查询当前数据库名称

SQL> select sys_context('userenv','db_name') from dual;

查询当前数据库语言

SQL> select sys_context('userenv','language') from dual;

查询当前数据库用户

SQL> select sys_context('userenv','session_user') from dual;


文章标题:oracle基础教程(第三天)Java操作数据库
文章网址:http://www.jzjsw.com/shujuku/Oracle/3788.html
上一篇:oracle基础教程(第二天)
下一篇:oracle基础教程(第四天)数据库管理
来顶一下
返回首页
返回首页
相关文章
    无相关信息
推荐资讯
如何通过SEO优化排名赚钱?SEO赚钱方法
如何通过SEO优化排名赚
seo优化教程:网站seo内容优化
seo优化教程:网站seo
SEO细节:企业SEO如何快速为新站做出效果
SEO细节:企业SEO如何
电商技术将如何发展?2018年有这五个大胆预测
电商技术将如何发展?
最新文章
栏目更新
栏目热门