日期:2014-05-20  浏览次数:20733 次

jdbc thin连接oracle,setSavepoint方法报错
大家好,问题是这样的:我用JDBC的THIN连接连上ORACLE后,想试下部分回滚功能,就在插入两条记录后用   setSavepoint()方法,然后再插入一条记录,然后调用有savepoint参数的rollback方法,可是,在运行到   setSavepoint方法时,就报错了,错误为java.lang.AbstractMethodError
我用的JDK为1.5,ORACLE为9i,JDBC的JAR文件为class12.jar,以下是部分代码,请各位高手指教,不胜感激!
Class.forName( "oracle.jdbc.driver.OracleDriver ");
Properties   properties=new   Properties();
properties.setProperty( "username ",   "scott ");
properties.setProperty( "password ",   "tiger ");
//Connection   con=DriverManager.getConnection( "jdbc:oracle:thin:@192.168.1.47:1521:billing ",   properties);//这句也报错,不知道为什么
Connection   con=DriverManager.getConnection( "jdbc:oracle:thin:@192.168.1.47:1521:billing ",   "scott ", "tiger ");

System.out.println( "连接创建成功 ");
System.out.println( "con默认提交: "+con.getAutoCommit());
con.setAutoCommit(false);
System.out.println( "con提交更改为: "+con.getAutoCommit());
Statement   stm=con.createStatement();
stm.executeUpdate( "insert   into   aa   values(1, 'wei ') ");
stm.executeUpdate( "insert   into   aa   values(2, 'wang ') ");
Savepoint   sp=con.setSavepoint();
stm.executeUpdate( "insert   into   aa   values(3, 'chen ') ");

con.rollback(sp);
con.commit();
con.releaseSavepoint(sp);
stm.close();
con.close();


报的错误为:
Exception   in   thread   "main "   java.lang.AbstractMethodError:   oracle.jdbc.driver.OracleConnection.setSavepoint()Ljava/sql/Savepoint;
at   jdbc.SimpleJdbcTest.main(SimpleJdbcTest.java:48)

我用反编译jad.exe查了class12.jar中的OracleConnection类的setSavepoint方法,不是抽象的
public   synchronized   OracleSavepoint   oracleSetSavepoint()
                throws   SQLException()


------解决方案--------------------
已解决,是class12.jar的问题,换用了ojdbc14.jar后,那一句 setSavepoint方法就没有错了,不过,con.releaseSavepoint(sp);报错了,说不支持。呵呵

第一句建立连接的问题也解决,原来这里的是 user,不是 username ,和spring里配置的名字不一样。
大家注意一下啦!哈哈