现在oracle的版本是8.1,要建立个连接,可总在jdk的这个class里报错。
java.sql.DriverManager的方法registerDriver的di.driverClassName = di.driverClass.getName();
报出来的错是数组越界。我的测试source是
try {
String url="jdbc:oracle:thin:@192.168.0.239:1521:crd";
//String url="jdbc:oracle:thin:@localhost:1521:tcrd";
String user="crd";
String password="crd";
Class.forName("oracle.jdbc.driver.OracleDriver");

try {
Connection conn= DriverManager.getConnection(url,user,password);
if (conn == null) {
System.out.print("error");
} else {
System.out.print("right");
}
} catch (SQLException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}在连接的时候报的数组越界。用的驱动是oracle8.1的classes111.zip,我的工程是java application ,直接把这个包考过来了。
classes111.zip和class12.zip都用过,都有这个问题。
估计原因是驱动的问题,啥原因?

解决方案 »

  1.   

    既然换过驱动问题依旧那就肯定不是驱动的问题这样写:Class driver = Class.forName("oracle.jdbc.driver.OracleDriver");
          DriverManager.registerDriver((Driver)driver.newInstance());//你少了这句
          connection = DriverManager.getConnection(url, userName, password);你光加载了驱动类,就和动态加载任何一个类一样,但是没有向驱动管理器注册这个驱动实例
    你的驱动管理器的驱动列表里面一个驱动都没有,取名字为空
      

  2.   

    String   url="jdbc:oracle:thin:@192.168.0.239:1521:crd"; crd是你oracle SID吗?如果只是你的用户名,那就不对.这里应该是SID.
      

  3.   

    修改后的是这样的
    try {
    String url = "jdbc:oracle:thin:@192.168.0.239:1521:crd";
    String user = "crd";
    String password = "crd"; Class driver = Class.forName("oracle.jdbc.driver.OracleDriver");
    DriverManager.registerDriver((Driver) driver.newInstance());
    Connection conn = DriverManager.getConnection(url, user, password); System.out.print("right");
    } catch (Exception e) {
    // TODO 自動生成された catch ブロック
    e.printStackTrace();
    }
    还是能抛出来数组越界。
    纳闷,原来用 10g咋连都没问题。
    而且我的1521:crd的crd就是sid
      

  4.   

    OK了,服务器和客户端ORACLE 版本不对
    客户端是 8
    服务器端是 10