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,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. JQuery触发radio或checkbox的change事件

    在JQuery中,当给radio或checkbox添加一个change事件时,如果它的值发生变化就会触发change事件;本文将详细介绍如何利用JQuery触发Checkbox的change事件需要了 ...

  2. bzoj4381: [POI2015]Odwiedziny

    这题搞了我一下午……因为一些傻X的问题…… 对于步长大于sqrt(n)的询问,我们可以直接暴力求解 然后,我们可以事先预处理出d[u][step]表示u往上跳,每次跳step步,直到跳到不能跳为止,所 ...

  3. oracle配置数据库连接方式

    有以下两种: (1)tnsname.ora中添加信息 例如: (2)在plsq  database下添加地址 例如:192.168.1.210:1521/orcl

  4. Hadoop设置环境变量注意事项

    路径是/etc/profile. 这个东西不能再普通下设置,打开是彩色的,即便是“:wq!”也不能保存,必须去root下,黑白的. 然后root下source /etc/profile,然后exit, ...

  5. jquery插件-表单验证插件-提示信息中文化与定制提示信息

    接上一篇 2)messages 提示:修改默认的提示信息最简单的方法是引入message_zh.js文件即可! 如果需要在validate()方法内提示则可以使用本选项 类型:Object 说明:自定 ...

  6. Linux VFS Extended Attribute And Access Control Table

    catalog . 简介 . 扩展属性 . 访问控制表 . 小结 0. 简介 许多文件系统都提供了一些特性,扩展了VFS层提供的标准功能,虚拟文件系统不可能为所有特性都提供具体的数据结构.超出标准的U ...

  7. [iOS OpenCV的使用,灰度和二值化]

    看网上方法很多,但版本都不够新,我看了网上一些知识,总结了下,来个最新版Xcode6.1的. 最近主要想做iOS端的车牌识别,所以开始了解OpenCV.有兴趣的可以跟我交流下哈. 一.Opencv的使 ...

  8. RBD和AOF持久化对比

    RDB和AOF持久化对比 Redis提供了RDB持久化和AOF持久化,本篇文章中将会对这两种机制进行一些对比 RDB机制的优势和略施 RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘. ...

  9. HDU 1166 敌兵布阵(线段树模板题)

    题目链接: 传送门 敌兵布阵 Time Limit: 2000MS     Memory Limit: 32768 K Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头 ...

  10. Python3 学习笔记------迭代器

    python 迭代器 要理解python迭代器(iterator),先要理解两个概念:Iterable(可迭代对象).Iterator(迭代器) 先来help()一下Iterator: >> ...