Class.forName("oracle.jdbc.driver.OracleDriver");  这句代码不需要也可以连接啊,请问加上这句代码有什么作用?数据库:oracle11g2  驱动:ojdbc5

解决方案 »

  1.   

    DriverManager.getDrivers();
    Class.forName("oracle.jdbc.OracleDriver");
    DriverManager.getDrivers();
    调用前调用后的区别
      

  2.   

    这是在虚拟机上加载这个驱动类OracleDriver....就相当于你实例化一个类
      

  3.   

    呃   我也不知道为什么   IDE:eclipse大家测试下就知道能不能连接了啊,很简单的几行代码,何必纠结于能不能连接呢。我测试的结果不加也能连接。我想知道为什么???
      

  4.   

    给大家看下我的代码吧
    String url = "jdbc:oracle:thin:@localhost:1521:XXX";
    String user = "XXX";
    String password = "XXX";
    Connection conn = null;
    try{
    // Class.forName("oracle.jdbc.driver.OracleDriver"); //commented
    conn = DriverManager.getConnection(url,user,password);
    }catch(Exception e){
    e.printStackTrace();
    }
    CallableStatement stmt = conn.prepareCall("{call Test.test3(?,?)}");
    stmt.registerOutParameter(1, OracleTypes.CURSOR);
    stmt.setString(2, "Test");
    stmt.execute();
    ResultSet rs = (ResultSet)stmt.getObject(1);
    System.out.println(rs);
    while(rs.next()){
    System.out.println(rs.getString(1));
    }
    System.out.println(conn);打印结果:
    oracle.jdbc.driver.OracleResultSetImpl@37fb1e
    Test
    [email protected](?,?)是一个procedure,将第2个String作为游标结果集返回
      

  5.   

    to 13L:
    不知道你粘这个链接是什么意思?  还要我注册才能看到你的网页内容,太假了吧
      

  6.   

    如果用jdbc连的话,那么先将oracle的驱动引入到项目中去,然后在jdbc的类文件里,写如下的语句,肯定就能连上了:
    Oracle8/8i/9i数据库(thin模式) 
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
    String url="jdbc:oracle:thin:@localhost:1521:orcl"; 
    //orcl为数据库的SID 
    String user="test"; 
    String password="test"; 
    Connection conn= DriverManager.getConnection(url,user,password); 
      

  7.   

    加载驱动 的程序在 OracleDriver的 类体中  为静态语句块   class。forName 加载类 会调用静态语句块 所以就将 自动创建了了 OracleDriver
    的一个实例 即完成 驱动加载
      

  8.   

    不加载驱动器 能连接吗?  应该是不能吧。。 不过能连接 干嘛每个数据库都推出自己的JAR包呢
        这个 是注册类中的。。
      你在的第三方包用的 这个包有点特殊 就是实现了JDBC里面的接口 所以你每次用不同的数据库 
      可以用相同的方法。。  大致是不需要改变的。
       所以 你不知道这些方法倒是那个包里面能实现的。。 所以你需要去加载实现这些方法的 包。。 
      可以用calss.forname(“类明”)加载了你注册的 类、、
       加载的方式 可以很多只要 让虚拟机 认识你加载类 就OK的。。
      

  9.   

    除了JAVA自带的sun.jdbc.odbc.JdbcOdbcDriver这个驱动外,其它的数据库包都需要加载驱动的,加载驱动不一定是通过Class.forName("oracle.jdbc.OracleDriver");比如说new OracleDriver().getClass();只要加载那个类就会自动注册驱动