本人用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();
}
}
}
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();
}
}
}
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection(
URL, user, pwd);
问题在 oracle.jdbc.driver.OracleDriver 的版本上面,试试有没有其他版本 ~~
java/sql/Savepoint 是JDK自带的包,1.4以后就应该有了
classpath下试下
ora92\jdbc\lib目录下边,有class12.jar
看一下是不是版本问题
烦啊!
环境里面存在两个jdbc 包,可能包含了class12.jar 这个包
在整个工程的CLASS_PATH下面找找看
要保证环境中JDBC 驱动是纯净的,否则会出很多问题
已提示你的 main 函数第24行有错误了,然后再分析是什么原因
最好到官网上下载
从oracle 9.2之后,对jdbc 的驱动程序的命名有所改变.
JDK1.1,JDK1.2的驱动程序名称为class12.jar,没有改变,一直沿用下去,从JDK1.4开始驱动程序名称所有变化,例如:JDK1.4的驱动名为ojdbc14.jar 。JDK1.5的驱动名为ojdbc15.jar。
应该是驱动的问题请使用ora9i安装目录下 jdbc目录中自带的驱动
不要用jdk里的