本人用jdbc-odbc桥连接Oracle9i 9.2.0.1 正常,代码如下:
import java.sql.*;
public class S 

  public static void main(String[] args) 
  { 
     String sql; 
     Connection conn; 
     Statement stmt; 
     ResultSet rs; 
     try 
     {        Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); 
       conn = DriverManager.getConnection( "jdbc:odbc:" + "hzdb", "hr", "1" );        stmt=conn.createStatement(); 
       sql="select * from jobs"; 
       rs=stmt.executeQuery(sql); 
       while(rs.next()) 
       { 
         System.out.println(rs.getString(1)); 
         System.out.println(rs.getString(2)); 
       } 
       rs.close(); 
       stmt.close(); 
       conn.close(); 
     } 
     catch(Exception e) 
     { 
     e.printStackTrace(); 
     } 
  } 

 
 
    但改用jdbc连接时(已加入ojdbc14.jar,classpath环境变量已设置),javac编译通过,但用java执行时报如下错误,请指导如可解决,谢谢.
Exception in thread "main" java.lang.NoClassDefFoundError: java/sql/Savepoint
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtensio
n.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at S.main(S.java:24)
    补充:jdbc连接Oracle9i 9.2.0.1代码如下:
import java.sql.*;
public class S 

  public static void main(String[] args) 
  { 
     String sql; 
     Connection conn; 
     Statement stmt; 
     ResultSet rs; 
     try 
     {        String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;
       String DBURL = "jdbc:oracle:thin:@localhost:1521:xujie" ;
       String DBUSER = "hr" ;
       String DBPASSWORD = "1" ;
       conn = null ;
       stmt = null ;
       Class.forName(DBDRIVER) ;
         // 连接时必须填写用户名及密码
       conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
 
       stmt=conn.createStatement(); 
       sql="select * from jobs"; 
       rs=stmt.executeQuery(sql); 
       while(rs.next()) 
       { 
         System.out.println(rs.getString(1)); 
         System.out.println(rs.getString(2)); 
       } 
       rs.close(); 
       stmt.close(); 
       conn.close(); 
     } 
     catch(Exception e) 
     { 
     e.printStackTrace(); 
     } 
  } 

 

解决方案 »

  1.   

    不清楚 看代码好像没有问题的啊楼主尝试下其他的方式吧
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    conn = DriverManager.getConnection(
    URL, user, pwd);
      

  2.   

    关键在 Exception in thread "main" java.lang.NoClassDefFoundError: java/sql/Savepoint
    问题在 oracle.jdbc.driver.OracleDriver 的版本上面,试试有没有其他版本 ~~
      

  3.   

    你JDK版本多少?
    java/sql/Savepoint 是JDK自带的包,1.4以后就应该有了
    classpath下试下
      

  4.   

    你加入的包应该是class12.jar,而不是ojdbc14.jar
      

  5.   

    在你的安装的oracle工作目录的
    ora92\jdbc\lib目录下边,有class12.jar
      

  6.   

    多半是没把class12.jar这个导到lib目录下
      

  7.   

    cmd> java -version
    看一下是不是版本问题
      

  8.   

    jdk版本问题,没有这个类[java.sql.Savepoint]
      

  9.   

    我用sql server 2000也是没连接上 
    烦啊!
      

  10.   

    看你报错的问题,应该是JDK版本的问题,只有jdbc3.0才支持SavePoint的
      

  11.   


    环境里面存在两个jdbc 包,可能包含了class12.jar 这个包
    在整个工程的CLASS_PATH下面找找看
    要保证环境中JDBC 驱动是纯净的,否则会出很多问题
      

  12.   

    楼主注意调试输出的错误信息:
    已提示你的 main 函数第24行有错误了,然后再分析是什么原因
      

  13.   

    版本问题,换个JDBC驱动试下
    最好到官网上下载
      

  14.   

    jar版本问题
    从oracle 9.2之后,对jdbc 的驱动程序的命名有所改变.
    JDK1.1,JDK1.2的驱动程序名称为class12.jar,没有改变,一直沿用下去,从JDK1.4开始驱动程序名称所有变化,例如:JDK1.4的驱动名为ojdbc14.jar 。JDK1.5的驱动名为ojdbc15.jar。
      

  15.   

    建议看一下你的jdk版本及使用class12.jar包
      

  16.   

    我也用的ora9i
    应该是驱动的问题请使用ora9i安装目录下 jdbc目录中自带的驱动
    不要用jdk里的
      

  17.   

    Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ).newInstance();  
      

  18.   

    加载驱动并在IDE中make path
      

  19.   

    两个jar包一个一个实验一下,看看是不是版本的问题