`

新人对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(); 改为: ...

    常用数据库jdbc连接写法大全

     class.forname( "org.gjt.mm.mysql.driver" );  cn = drivermanager.getconnection( "jdbc:mysql://mydbcomputernameorip:3306/mydatabasename", susr, spwd );    2. postgresql(http://www.de.postgresql.org...

    Java 连接多种数据库代码参考

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicod e=true&characterEncoding=8859_1" //myDB为数据库名 Connection ...

    常用数据库JDBC连接写法

    常用数据库JDBC连接写法 MySQL(http://www.mysql.com)mysql-connector-java-2.0.14-bin.jar Class.forName( "org.gjt.mm.mysql.Driver" );

    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....

    各类数据库JDBC-配置

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

    mysql-connector-java-commercial-5.1.30-bin.jar

    &lt;%Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1" //first为你的数据库名 ...

    JSP用JDBC-ODBC连接SQL Server和Mysql和JDBC驱动连接各种数据库

    Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e) { System.out.println("加载数据驱动有误:" + e.getMessage()); } } public Connection getConn() { try { String url = ...

    jdbc连接代码

    String driver = "org.gjt.mm.mysql.Driver"; // 定义连接数据库对象conn Connection conn = null; // 定义执行sql语句对象stmt Statement stmt = null; //定义结果集对象rs,用来保存查询的结果 ...

    java对blob的存取.pdf

    Class.forName("org.gjt.mm.mysql.Driver").newInstance(); conn = DriverManager.getConnection(URL); file = new File(infile); fis = new FileInputStream(file); pstmt = conn.prepareStatement("insert ...

    jsp连接数据库大全

    &lt;%Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1" //testDB为你的数据库名 ...

    Java学生管理系统,Mysql数据库,gui结合

    Class.forName("org.gjt.mm.mysql.Driver"); } catch(java.lang.ClassNotFoundException e11) { System.out.println("Class not found exception occir.Message is:"); System.out.println(e11...

    jsp探针 ver0.1

    Class.forName("org.gjt.mm.mysql.Driver"); supportMmMysqlDriver = true; } catch (ClassNotFoundException ex) { } try { Class.forName("com.mysql.jdbc.Driver"); supportComMysqlDriver = true; } catch ...

    jsp连接各种数据库代码及读取数据实例

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

    jsp 分页代码大全

    //Class.forName("org.gjt.mm.mysql.Driver").newInstance(); Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); sqlCon=java.sql.DriverManager.getConnection(DBUrl,DBUser,...

Global site tag (gtag.js) - Google Analytics