Java操作Oracle

时间:2021-02-24 22:36:06
public class DBCon {
// 数据库驱动对象
public static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
// 数据库连接地址(数据库名)
public static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
// 登陆名
public static final String USER = "scott";
// 登陆密码
public static final String PWD = "123456";
// 创建数据库连接对象
private Connection con = null;
// 创建数据库预编译对象
private PreparedStatement ps = null;
// 创建结果集
private ResultSet rs = null;
// 创建数据源对象
public static DataSource source = null; public Connection getCon() {
try{
Class.forName(DRIVER);
con = DriverManager.getConnection(URL, USER, PWD);
System.out.println("数据库连接成功!");
} catch (Exception e) {
System.err.println("数据库连接失败!");
e.printStackTrace();
}
return con;
} public void closeAll() {
if (rs != null)
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (ps != null)
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (con != null)
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
} public int update(String sql,String... pras){  
        int resu=0;  
        con=getCon();  
        try {  
            ps=con.prepareStatement(sql);  
            for(int i=0;i<pras.length;i++){  
                ps.setString(i+1,pras[i]);  
            }  
            resu=ps.executeUpdate();  
        } catch (SQLException e) {  
        }  
        finally{  
            closeAll();  
        }  
        return resu;  
    }   public ResultSet query(String sql,String... pras){  
        con=getCon();  
        try {  
            ps=con.prepareStatement(sql);  
  
            if(pras!=null)  
                for(int i=0;i<pras.length;i++){  
                    ps.setString(i+1, pras[i]);  
                }  
            rs=ps.executeQuery();  
        } catch (SQLException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        return rs;  
    }  public static void main(String[] args) throws SQLException {
DBCon dbCon = new DBCon();
// dbCon.getCon();
ResultSet resultSet = dbCon.query("select * from emp", null);
while (resultSet.next()) {
System.out.printf("%-10d",resultSet.getInt(1));    
    //输出10列,左对齐(-号表示左对齐)
// System.out.print(resultSet.getInt(1) + "\t\t");
System.out.printf("%-10s",resultSet.getString(2)); 
// System.out.print(resultSet.getString(2) + "\t\t");
System.out.printf("%-20s",resultSet.getString(3)); 
// System.out.print(resultSet.getString(3) + "\t\t\t\t");
System.out.printf("%-10d",resultSet.getInt(4)); 
// System.out.print(resultSet.getInt(4) + "\t\t");
System.out.print(resultSet.getDate(5) + "\t\t");
System.out.print(resultSet.getDouble(6) + "\t\t");
System.out.print(resultSet.getDouble(7) + "\t\t");
System.out.println(resultSet.getInt(8));
}
dbCon.closeAll();
}
}

Jar包下载 http://yunpan.cn/QC5IeekKJvixN  提取码 243b

Java操作Oracle实现事务回滚

		DBCon dbCon = new DBCon();
Connection connection = dbCon.getCon();
String sql = "";
Statement statement = null;
try {
connection.setAutoCommit(false);//设置事物不自动提交 sql = "update emp set sal = sal - 100 where ename = 'SMITH'"; statement = connection.createStatement();
statement.executeUpdate(sql); int i = 7/0; //抛异常。 sql = "update emp set sal = sal - 100 where ename = 'JAMES'";
statement.executeUpdate(sql); connection.commit();
} catch (Exception e) {
//注意这里如果是SQLException,上面7/0抛出的异常就不会被这里捕获到,下面的rollback自然就不会执行。陷阱
try {
connection.rollback();//事务回滚
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}finally{
dbCon.closeAll();
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

默认情况下事物自动提交,此时上例中抛出异常后,前面的sql语句可以执行成功,后面的不会被执行。进行事物管理之后,上例中抛出异常后,事物会在下面的catch块中回滚。保证两个sql语句都不执行。

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/1532489

Java操作Oracle的更多相关文章

  1. java 操作Oracle 批量入库的问题

    java 操作Oracle 批量入库的问题 先说下我运行的环境: Windows7 64位操作系统 (四核)Intel i5-2300 CPU @2.80GHz 内存4G 硬盘1T Jdk1.6+My ...

  2. JAVA操作ORACLE数据库的存储过程

    一.任务提出 JAVA操作oracle11g存储过程实验需要完成以下几个实例: 1.调用没有返回参数的过程(插入记录.更新记录) 2.有返回参数的过程 3.返回列表的过程 4.返回带分页的列表的过程. ...

  3. Java操作Oracle数据库以及调用存储过程

    操作Oracle数据库 publicclass DBConnection {     //jdbc:oracle:thin:@localhost:1521:orcl     publicstaticf ...

  4. java操作oracle的blob&comma;clob数据

    一.区别和定义 LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列 LONG RAW: 可变长二进制数据,最长2G CLOB:  ...

  5. JAVA操作ORACLE大对象

    一:操作CLOB  (1)数据库表结构如下:         create table CLOB_TEST      (         ID      VARCHAR2(5) not null,   ...

  6. Java 操作Oracle数据库

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...

  7. JAVA操作Oracle数据库中的事务

    实验1: create table yggz(code int, salary number(7,2)); insert into yggz values(1, 1000); insert into ...

  8. java操作oracle空间信息介绍

    转自:http://www.cdtarena.com/javapx/201307/9088.html sde是Spatial Database Engine简写,中文全称:空间数据库引擎. SDE是一 ...

  9. 第十五篇:java操作oracle踩坑之旅

    最近刚做完mysql的各种需求,项目要满足oracle数据库,于是走上了漫漫的踩坑之路,同行可以看看以免踩坑……第一条:oracle建表的时候不需要在建表sql语句后指定默认字符集 DEFAULT C ...

随机推荐

  1. char和byte的区别

    char的字符数据类型,是无符号型的,占2个字节:大小范围是0-65535: byte是字节数据类型,是有符号型的,占1个字节:大小范围为-128-127: 1, char c1=3; char c= ...

  2. Nginx中的rewrite指令

    转自:http://www.76ku.cn/articles/archives/317 rewite.在server块下,会优先执行rewrite部分,然后才会去匹配location块server中的 ...

  3. Storm集群部署

    一. 说明 Storm是一个分布式实时计算系统,Storm对于实时计算的意义就相当于Hadoop对于批量计算的意义.对于实时性较高的系统Storm是不错的选择.Hadoop提供了map, reduce ...

  4. Perl的DATA文件句柄

    有太多次写完一个perl程序,需要另外新建一个文件来测试,每次觉得很繁琐,但又不得不这么做.没想到原来perl已经提供了解决方案,这就是DATA. 使用很简单,见下面这个例子: #!/usr/bin/ ...

  5. MSSQL 如何实现 MySQL 的 limit 查询方式 &lpar;转&rpar;

    不知为何,MSSQL 中没有 limit 这个极为重要的查询方式,熟悉 MySQL 的朋友都知道,MySQL 的 limit 对于实现分页和一些限制结果集的应用中非常方便.没有不要紧,我们可以用其他方 ...

  6. 如何使用JCA &lpar;J2EE 连接器架构)实现企业应用--转载

    JCA (J2EE 连接器架构,Java Connector Architecture)是对J2EE标准集的重要补充.因为它注重的是将Java程序连接到非Java程序和软件包中间件的开发.连接器特指基 ...

  7. Chrome 62 的大坑:修改密码后始终使用保存的旧密码登录

    最近有用户向我们反馈,修改密码后,怎么也登录不了我们网站,总是提示密码错误.用户确认密码肯定没错,通过用户发给我们的操作截图看,用户修改密码的操作也没问题. 开始我们没能重现出这个问题,我们检查了相关 ...

  8. ThinkPad安装deepin操作系统报错解决方法

    目前deepin操作系统,软件也比较多,所以想在自己的thinkpad t430笔记本上安装.但是安装时报错,具体错误忘了看了.反复试了好几次都不行,最后在网上查了,讲bios设置调整之后可以正常安装 ...

  9. 如何用python的装饰器定义一个像C&plus;&plus;一样的强类型函数

        Python作为一个动态的脚本语言,其函数在定义时是不需要指出参数的类型,也不需要指出函数是否有返回值.本文将介绍如何使用python的装饰器来定义一个像C++那样的强类型函数.接下去,先介绍 ...

  10. Emgu学习之(五)——图像模糊处理

    Visual Studio Community 2015 工程和代码:http://pan.baidu.com/s/1Qia0Q 内容 在这篇文章中将提到以下内容: 中值模糊 高斯模糊 图像模糊能有效 ...