当前位置:编程学习 > JAVA >>

JDBC连Oracle事务测试中的问题!~求大神帮忙看下问题在哪里??


package com.sp;

import java.sql.*;

public class TestTrans {
public static void main(String[] args) {
Connection ct = null;
Statement sm = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
ct=DriverManager.getConnection("jdbc:oracle:thin:@192.168.181.132:1521:orcl","scott","test");;
sm = ct.createStatement();
System.out.println("0...");
// 从scott中减去100

// 加入事务处理
ct.setAutoCommit(false);
sm.executeUpdate("update emp set sal=sal-100 where ename='SCOTT'");
System.out.println("1...");
//int i = 4 / 0;// 当然这里只是举个列子,出现异常有很多种

// 从smith中加上100
sm.executeUpdate("update emp set sal=sal-100 where ename='SMITH'");
// 提交事务
ct.commit();
sm.close();
ct.close();
} catch (Exception e) {
try {
// 出现异常等 回滚事务
ct.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
}
}
为什么这段代码在我这里就不能正常运行!~看了韩顺平的教程。。明明韩老师蛮顺利的!~为什么??JDBC导包正确的!!求大神帮忙看看!! --------------------编程问答-------------------- 最好说明下提示什么异常或者错误 --------------------编程问答-------------------- 他真的没有异常~!~ --------------------编程问答-------------------- 那到底是出了什么问题嘛?描述清楚一点,没有回滚吗?还是什么问题你总要说清楚才好解决的撒。你就说一个不能正常运行谁知道呀 --------------------编程问答-------------------- 我这边用的不是Oracle,代码如下
你拿着测试一下,还出现问题的话再贴

import java.sql.*;

public class TestTrans {
private static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String DBURL = "jdbc:oracle:thin:@192.168.181.132:1521:orcl";
private static final String DBUSERNAME = "scott";
private static final String DBPASSWORD = "test";

public static void main(String[] args) {
Connection ct = null;
Statement sm = null;
try {
Class.forName(DBDRIVER);
ct = DriverManager.getConnection(DBURL, DBUSERNAME, DBPASSWORD);
ct.setAutoCommit(false);
sm = ct.createStatement();

// 一下两行代码测试是否拿到ct,sm对象
System.out.println(ct);
System.out.println(sm);

sm.executeUpdate("update emp set sal=sal-100 where ename='SCOTT'");
int i = 4 / 0;
ct.commit();

    //出现异常的话,rollback()
} catch (Exception e) {
try {
ct.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
    
    // 数据库资源的关闭
} finally {
if (sm != null) {
try {
sm.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
ct.close();
} catch (SQLException e) {
}
}
}
}
}
}
--------------------编程问答-------------------- Statement一旦绑定sql语句,就不能再绑定别的sql语句了,你用sm操作了两个不同的sql语句,肯定不能执行。换成PrepareStatement吧。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,