`

详解class.forName()链接数据库

阅读更多
public static Connection getConn() {
		Connection conn = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bbs", "root" , "root");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
是不是对Class.forName(String url)陌生啊?
根据字面的意思初步的理解可能是:为某个名字创建一个类!
好吧!让我们慢慢来认识一些class.forname .
在Java开发特别是数据库开发中,经常会用到Class.forName( )这个方法。通过查询Java Documentation我们会发现使用Class.forName( )静态方法的目的是为了动态加载类。在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。因此,单单使用Class.forName( )是动态加载类是没有用的,其最终目的是为了实例化对象。 
    这里有必要提一下就是Class下的newInstance()和new有什么区别?,首先,newInstance( )是一个方法,而new是一个关键字,其次,Class下的newInstance()的使用有局限,因为它生成对象只能调用无参的构造函数,而使用 new关键字生成对象没有这个限制。 
好,到此为止,我们总结如下: 
    Class.forName("")返回的是类 
    Class.forName("").newInstance()返回的是object 
T
newInstance() 
          创建此 Class 对象所表示的类的一个新实例。

有数据库开发经验朋友会发现,为什么在我们加载数据库驱动包的时候有的却没有调用newInstance( )方法呢?即有的jdbc连接数据库的写法里是Class.forName(xxx.xx.xx);而有一些:Class.forName(xxx.xx.xx).newInstance(),为什么会有这两种写法呢? 
    刚才提到,Class.forName("");的作用是要求JVM查找并加载指定的类,如果在类中有静态初始化器的话,JVM必然会执行该类的静态代码段。而在JDBC规范中明确要求这个Driver类必须向DriverManager注册自己,即任何一个JDBC Driver的Driver类的代码都必须类似如下: 
   public class MyJDBCDriver implements Driver { 
    static { 
      DriverManager.registerDriver(new MyJDBCDriver()); //这样就将Driver和DriverManager相互关联起来了,即是:Driver向DriverManager注册了,就像我们新生报到一样。
在加载某一 Driver 类时,它应该(new)创建自己的实例并向 DriverManager(register)注册该实例
   } 
   } 
  既然在静态初始化器的中已经进行了注册,所以我们在使用JDBC时只需要Class.forName(XXX.XXX);就可以了。 
java.sql 
接口 Driver
________________________________________
public interface Driver
每个驱动程序类必须实现的接口。 
Java SQL 框架允许多个数据库驱动程序。 
每个驱动程序都应该提供一个实现 Driver 接口的类。 
DriverManager 会试着加载尽可能多的它可以找到的驱动程序,然后,对于任何给定连接请求,它会让每个驱动程序依次试着连接到目标 URL。 
强烈建议每个 Driver 类应该是小型的并且是单独的,这样就可以在不必引入大量支持代码的情况下加载和查询 Driver 类。 
在加载某一 Driver 类时,它应该创建自己的实例并向 DriverManager 注册该实例。这意味着用户可以通过调用以下程序加载和注册一个驱动程序 
   Class.forName("foo.bah.Driver")


分享到:
评论

相关推荐

    java中Class.forName方法的作用详解

    Java中的`Class.forName()`方法是一个非常关键的工具,主要用于动态加载类。它的作用在于根据给定的类全名(包括包名)返回对应的`Class`对象。`Class`对象是Java反射机制的基础,它代表着运行时的类信息,可以通过...

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

    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // orcl 为数据库SID String user = "test"; String password = "test"; ...

    jdbc驱动程序实例

    - **Class.forName()**:用于加载特定的JDBC驱动类。 - **DriverManager.getConnection()**:用于建立到数据库的连接。 - **URL**:指定数据库的位置以及连接参数。 - **Connection**:表示与数据库之间的连接。 ##...

    java链接数据库大全

    Class.forName("oracle.jdbc.driver.OracleDriver"); // 加载Oracle驱动 String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // orcl为Oracle实例的SID String user = "test"; String password = "test"; ...

    JDBC数据库链接,连接各种数据库方式速查表

    Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String user = "test"; String password = "test"; Connection conn = DriverManager.get...

    各种数据库的java链接

    - **加载驱动**:使用`Class.forName()`方法加载Oracle JDBC驱动。 - **设置URL**:URL格式为`jdbc:oracle:thin:@主机名:端口号:服务名`,其中服务名即SID(Service Identifier)。 - **建立连接**:通过`...

    java jdbc连接数据库

    Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@localhost:1521:orcl"; ``` ##### 5. 使用jTDS连接SQL Server 2000 如果使用jTDS驱动连接SQL Server 2000,则需要jtds-1.2....

    jsp连接各个数据库的代码

    Class.forName(driver); Connection con = DriverManager.getConnection(url, username, password); ``` **注意**:由于 Access 数据库本身的限制,它并不支持 JDBC 连接。因此,这里推荐使用第三方库 `Ucanaccess`...

    各类数据库JDBC-配置

    - 驱动加载:`Class.forName("org.gjt.mm.mysql.Driver").newInstance();` - 连接URL:`jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1` - 这里`myDB`是...

    java 中连数据库的语法.doc

    这通常通过调用`Class.forName()`方法实现。 3. **建立连接**:通过`DriverManager.getConnection()`方法获取数据库连接。 4. **执行SQL语句**:使用`Statement`或`PreparedStatement`对象执行SQL语句。 5. **...

    java数据库连接代码

    Class.forName("oracle.jdbc.driver.OracleDriver"); // 创建连接字符串 String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // 其中orcl为Oracle服务名或SID String user = "scott"; String password = ...

    JAVA 数据库 连接 方法详解

    在所有上述例子中,`Class.forName()`方法用于加载相应的JDBC驱动类,`DriverManager.getConnection()`则用于建立实际的数据库连接。确保在运行代码前,已经将对应的JDBC驱动库(JAR文件)添加到项目的类路径中。 ...

    java中各种数据库的链接

    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); // 设置连接参数 String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // orcl为数据库SID String user = "test"; String password = "test";...

    JDBC访问所有数据库 连接数据源

    这一步是通过 Java 的 `Class.forName()` 方法来完成的,该方法会加载指定类,并将其初始化。下面列举了一些常见数据库的驱动加载方式: 1. **Oracle 8/8i/9i 数据库** (thin 模式): ```java Class.forName(...

    各种数据库的链接(JDBC)

    这是通过调用`Class.forName()`方法来完成的,该方法负责加载对应的驱动类。 - **MySQL**: 使用`com.mysql.jdbc.Driver` - **Oracle**: 使用`oracle.jdbc.driver.OracleDriver` - **DB2**: 使用`...

    JDBC连接各种数据库字符串大全

    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // orcl为数据库的SID String user = "test"; String password = "test"; Connection ...

    Java连接数据库代码.pdf

    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@localhost:1521:orcl";//orcl 为数据库的 SID String user = "test"; String password = "test"; Connection ...

    各种数据库使用JDBC连接的方式

    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // orcl为数据库的SID String user = "test"; String password = "test"; Connection ...

    JSP链接MySql技术

    ### JSP链接MySQL技术详解 #### 一、JDBC简介 JDBC(Java Database Connectivity,Java数据库连接)是Java平台上一种标准的API,用于执行SQL语句并为多种关系数据库提供统一访问方式。JDBC主要由一系列用Java编写...

    jdbc数据库连接大全.txt

    Class.forName("oracle.jdbc.driver.OracleDriver"); // 建立数据库连接 String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // orcl为Oracle服务名(SID) String user = "test"; String password = "test"; ...

Global site tag (gtag.js) - Google Analytics