是这样的:
我刚学JDBC,而且我这个人爱琢磨,喜欢刨根问底,
我想试一下加载JDBC驱动的两种方法:Class.forName() 和
System.setProperty()这两者有什么区别。一试我才发现即使不执行加载驱动程序的语句,
只要执行了DriverManager的getConnection()方法,并指定了正确的URL
就可以连上数据库,并正常读取数据了。
(注:我用的是JDBC-ODBC桥的方式连接SQL server 2000,其他方式我还没用过)
难道JdbcOdbcDriver这个驱动是Java自动加载的吗?
另外,为什么我在tools.jar和dt.jar中都没有找到JdbcOdbcDriver这个类呢?
而且也没有找到sun.jdbc.odbc这个包,为什么?
谢谢!

解决方案 »

  1.   

    忘了写我的代码,补充如下:
    import java.sql.*;

    class xt{

    public static void main(String in[]){

    /*
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    }catch(ClassNotFoundException cnfe){

    }*/

    //System.setProperty("jdbc.drivers","sun.jdbc.odbc.JdbcOdbcDriver");
    System.out.println(System.getProperty("jdbc.drivers"));

    try{
    Connection con=DriverManager.getConnection("jdbc:odbc:test");
    Statement stat=con.createStatement();

    ResultSet rs=stat.executeQuery("select * from room");

    while(rs.next()){
    System.out.println(rs.getString(1));
    }

    }catch(SQLException sqle){

    }
    }
    }
    (注: 在我的机子上可以正确读出数据)
      

  2.   


    重要说明:JavaSE在安装后仅自带了JDBC-ODBC连接桥的驱动程序,其他要自己下载并添加jar到classpath
    但JavaSE6.0开始对于支持JavaSE6.0的JDBC驱动程序可以不必使用Class.forName加载驱动
    系统会自动加载