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. 【CCCC天梯赛决赛】

    cccc的天梯赛决赛,水题一样的水,中档题以上的还是没做出来.补了一下题,觉得其实也不是很难,主要是练的少. L2-1:红色预警 并查集 我做的时候想不到并查集,想到了也不一定做的出来,都是其实不难. ...

  2. perl sub

    #/usr/bin/perl -w use strict; my $usage = "\n\nusage: $0 <length>\n\n"; my $length = ...

  3. 【BZOJ-1060】时态同步 树形DP (DFS爆搜)

    1060: [ZJOI2007]时态同步 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2101  Solved: 595[Submit][Statu ...

  4. 【poj3709】 K-Anonymous Sequence

    http://poj.org/problem?id=3709 (题目链接) 题意 给出一个n个数的序列,要求将其中一些数改为另一个比它小的数,改动的花费为两数的绝对值,完成改动后使得整个序列中出现过的 ...

  5. C#中的斜变性和逆变性的详解

    1,问题 大家可以看到定义泛型类型的可以看到out和in这两个关键字,那么具体代表什么意思呢? 2,文字解释 C# 4.0通过两个关键字:out和in来分别支持以协变和逆变的方式使用泛型. 如果某个返 ...

  6. 轻量级Web API实现,带接口界面的Jayrock JsonRPC接口组件升级版

    升级功能如下: 1.增加模块名称.输入参数.输出参数注释 2.增加Sign验证.输入数据解密.输出数据解密重写方法 3.增加集成Demo规范 4.增加模块分类.接口快速定位.接口调用说明.接口输入输出 ...

  7. Jenkins配置的邮件无法发送的问题

    一.不要使用系统默认的插件,请使用[Extended E-mail Notification] 二.一下的选项要和你发邮件人填写的保持一致

  8. CodeForces 37E Trial for Chief

    Time Limit: 2000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Description Having ...

  9. ecshop /goods.php SQL Injection Vul

    catalogue . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: poc http://localhost ...

  10. 研华外触发实验PCI1714板卡安装事项

    1.安装在工控机中 研华的旧版本驱动和新版本的驱动文件不能同时安装,有冲突. 如何安装新版本: 卸载旧版本.控制面板中的device manager. 安装新版本的DAQ NAVI SDK文件,安装P ...