`

新人对Class.forName("org.gjt.mm.mysql.Driver");的研究

    博客分类:
  • J2SE
阅读更多
学校时,照抄老师的代码。工作时,直接调用成熟框架的方法。从没有真正自己研究下。(惭愧)
今天试着自己写写JDBC连接数据库。
看到代码
……
Class.forName("org.gjt.mm.mysql.Driver");
conn = DriverManager.getConnection(url,username,password);
……
我在想孤零零的一句【Class.forName("org.gjt.mm.mysql.Driver");】到底做了什么,网友说:注册MySql驱动。可是自己习惯思维是,看到调用。这连引用都没有。它加载了谁,又调用了谁呢?
想不出来!“何不看看驱动源码”呢?对啊!理解解压【org.gjt.mm.mysql.Driver】
org\gjt\mm\mysql文件夹下就一个文件:类Driver

package org.gjt.mm.mysql;

import java.sql.SQLException;

public class Driver extends com.mysql.jdbc.Driver
{
}

再去看看 com.mysql.jdbc.Driver
package com.mysql.jdbc;

import java.sql.DriverManager;
import java.sql.SQLException;

public class Driver extends NonRegisteringDriver
  implements java.sql.Driver
{
  static
  {
    try
    {
      DriverManager.registerDriver(new Driver());
    } catch (SQLException E) {
      throw new RuntimeException("Can't register driver!");
    }
  }
}

兜兜转转,最后调用的还是【DriverManager.registerDriver(new Driver());】
但源文件里的
    public static synchronized void registerDriver(java.sql.Driver driver)
	throws SQLException {
	if (!initialized) {
	    initialize();
	}
      
	DriverInfo di = new DriverInfo();

	di.driver = driver;
	di.driverClass = driver.getClass();
	di.driverClassName = di.driverClass.getName();

	// Not Required -- drivers.addElement(di);

	writeDrivers.addElement(di); 
	println("registerDriver: " + di);
	
	/* update the read copy of drivers vector */
	readDrivers = (java.util.Vector) writeDrivers.clone();

    }

就不是十分理解了!
分享到:
评论
1 楼 半糖主义 2010-02-02  
<pre name="code" class="java">Class.forName("org.gjt.mm.mysql.Driver");</pre>
<p>这句原意是完成类加载,在这里是用来注册JDBC驱动的。</p>
<p>在JDBC 4.0里已经不需要再写这句垃圾代码。可以直接使用JDBC驱动</p>

相关推荐

    jdbc驱动程序实例

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); // 或者 Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&...

    mysql-connector-java-3.0.14-production-bin.jar

    mysql4.1.10的JDBC驱动 把它拷贝到你的web应用的WEB-INF\lib下(当然也可以设置CLASSPATH) &lt;br&gt;接着修改程序代码: 将你的: Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 改为: ...

    java于各种数据库连接额语句

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url = "jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"; Connection conn = ...

    mysql驱动(mysql-connector-java-5.1.41.jar+mysql-connector-java-8.0.17.jar)

    2. 驱动注册:在Java应用程序中,你需要通过Class.forName()方法注册对应的驱动类,例如"com.mysql.jdbc.Driver"(对于5.x)或"com.mysql.cj.jdbc.Driver"(对于8.x)。 3. 连接URL:连接URL会根据MySQL服务器的...

    JDBC常用的数据库连接.doc

    2. 使用`Class.forName()`加载驱动:`Class.forName("org.gjt.mm.mysql.Driver");` 3. 调用`DriverManager.getConnection()`建立连接:`cn=DriverManager.getConnection("jdbc:mysql://MyDbComputerNameOrIP:3306/...

    JDBC连接各种数据库的方法

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url = "jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"; Connection conn = DriverManager...

    java连接oracle,db2,MySQL,sqlserver等数据库的方式.pdf

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url = "jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"; Connection conn = ...

    jdbc连接数据库大全.doc

    Class.forName("org.gjt.mm.mysql.Driver"); String url = "jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"; Connection conn = DriverManager.getConnection...

    java开发中常用数据库JDBC连接写法.docx

    Class.forName("org.gjt.mm.mysql.Driver"); Connection cn = DriverManager.getConnection( "jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", sUsr, sPwd ); ``` 2. **PostgreSQL** 对于...

    常用的几种数据库连接方法总结

    Class.forName("org.gjt.mm.mysql.Driver"); cn = DriverManager.getConnection("jdbc:mysql://DBServerIP:3306/myDatabaseName", sUsr, sPwd); ``` 五、JDBC 连接 PostgreSQL PostgreSQL 是一种功能强大且开源的...

    JAVA数据库连接大全.pdf

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url = "jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"; Connection conn = ...

    巧用Jsp和Java连接Mysql数据库.pdf

    在Jsp文件中,可以直接使用`Class.forName("org.gjt.mm.mysql.Driver")`来加载驱动,然后通过`java.sql.Connection`接口建立数据库连接。 **Java连接Mysql数据库** 在Java程序中,同样需要引入Mysql JDBC驱动。在...

    java数据库连数语法

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); // 或者 Class.forName("com.mysql.jdbc.Driver") String url = "jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&...

    java实例jdbc连接数据库大全.doc

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url = "jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"; Connection conn = ...

    Java数据库连接(JDBC)

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url = "jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"; Connection conn = ...

    java中jdbc连接不同的数据库语法

    Class.forName("org.gjt.mm.mysql.Driver"); String url = "jdbc:mysql://localhost/testDB?user=testuser&password=testpassword&useUnicode=true&characterEncoding=GB2312"; Connection conn = DriverManager.get...

    各种数据库的JDBC驱动下载及连接字符串URL写法[定义].pdf

    Class.forName("org.gjt.mm.mysql.Driver"); Connection cn = DriverManager.getConnection("jdbc:mysql://MyDbComputerNameOrIP:3306/myDatabaseName", sUsr, sPwd); ``` 这里的URL格式是`jdbc:mysql://主机名:端口...

    连接各种数据库方式速查表.doc

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"; Connection conn= DriverManager....

    JDBC连接各种数据库代码

    Class.forName("org.gjt.mm.mysql.Driver"); String url = "jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"; Connection conn = DriverManager.getConnection...

    jdbc连接各种数据库

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url = "jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"; Connection conn = ...

Global site tag (gtag.js) - Google Analytics