为什么我没使用Class.forName("com.mysql.jdbc.Driver"),还是能正常获取到连接对象,谢谢解答,代码如下:

解决方案 »

  1.   

    百度找到资料了:
    程序不再需要使用Class.forName()显式地加载JDBC驱动程序。当前使用Class.forName() 加载JDBC驱动程序的现有程序将在不作修改的情况下继续工作。
    在调用getConnection方法时,DriverManager会试着从初始化时加载的那些驱动程序以及使用与当前程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。
    对于简单的应用程序,一般只需要DriverManager.getConnection(该方法将建立与数据库的连接)方法是即可。JDBC 允许用户调用 DriverManager 的方法 getDriver、getDrivers 和 registerDriver 及 Driver 的方法 connect。但多数情况下,让 DriverManager 类管理建立连接的细节为上策。
      

  2.   


           // List of registered JDBC drivers
           private final static CopyOnWriteArrayList<DriverInfo> registeredDrivers = new CopyOnWriteArrayList<DriverInfo>();
       
           static {
              loadInitialDrivers();
              println("JDBC DriverManager initialized");
            }        String[] driversList = drivers.split(":");
            println("number of Drivers:" + driversList.length);
            for (String aDriver : driversList) {
                try {
                    println("DriverManager.Initialize: loading " + aDriver);
                    Class.forName(aDriver, true,
                            ClassLoader.getSystemClassLoader());
                } catch (Exception ex) {
                    println("DriverManager.Initialize: load failed: " + ex);
                }
            }
      

  3.   

    现在可以不写Class.forName("com.mysql.jdbc.Driver")了?好久没用过JDBC了,去试试看
      

  4.   

    怎么我试了一下去掉Class.forName(),报错了,,