`
chenpingtai2008
  • 浏览: 58118 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

jdbc 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
    有数据库开发经验朋友会发现,为什么在我们加载数据库驱动包的时候有的却没有调用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());
   }
   }
  既然在静态初始化器的中已经进行了注册,所以我们在使用JDBC时只需要Class.forName(XXX.XXX);就可以了。

文章出处:http://www.diybl.com/course/3_program/java/javajs/20081013/150473.html
分享到:
评论

相关推荐

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

    总的来说,`Class.forName()`在Java中起到了动态加载和初始化类的关键作用,尤其在JDBC和其他需要延迟加载或动态选择实现的场景中。了解这个方法的工作原理,对于理解Java程序的运行机制和优化代码是十分重要的。在...

    sqljdbc4.jar, sqljdbc41.jar, sqljdbc42.jar三个包

    1. **导入驱动**: 在Java代码中,你需要通过`Class.forName()`方法加载JDBC驱动。 2. **建立连接**: 使用`DriverManager.getConnection()`方法,提供数据库URL、用户名和密码来创建一个`Connection`对象。 3. **创建...

    sqljdbc42.jar

    使用sqljdbc42.jar,你需要在Java代码中通过Class.forName()加载驱动,然后使用DriverManager.getConnection()创建数据库连接。以下是一个简单的示例: ```java import ...

    jdbc连接使用jar包 Access_JDBC40.jar

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ``` 3. **创建数据库连接**:接下来,使用`DriverManager.getConnection()`方法建立到Access数据库的连接。你需要提供数据库的URL,用户名(如果需要)和密码。...

    sqlserver驱动包 jdbc驱动 sqljdbc.jar和sqljdbc4.jar

    1. 加载驱动:使用Class.forName()方法加载JDBC驱动类。 ```java Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); ``` 2. 创建连接:使用DriverManager.getConnection()方法,传入数据库URL、...

    jdbc中class.forname的作用

    在Java JDBC编程中,`Class.forName()` 方法起着至关重要的作用。它的主要任务是动态加载指定的类并执行其实例的静态初始化块。在上下文中,`Class.forName()` 被用来加载数据库驱动,比如MySQL的`...

    Access_JDBC30.jar --Java JDK1.8实现与Access数据库连接

    Java写了一个连接Access数据库... Class.forName("com.hxtt.sql.access.AccessDriver").newInstance(); url = "jdbc:Access:///D:/dataAnalysis/accessDB.mdb"; connect = DriverManager.getConnection(url, "", "");

    sqljdbc4.jar程序文件

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn = DriverManager.getConnection( "jdbc:sqlserver://localhost:1433;databaseName=myDB", "username", "password"); ``` 这段...

    浅析使用JDBC操作MySQL需要添加Class.forName("com.mysql.jdbc.Driver")

    不使用`Class.forName()`的现代JDBC实践: 随着Java版本的更新,现在推荐使用Java的Service Provider Interface (SPI) 来自动加载驱动,避免显式调用`Class.forName()`。在JDBC 4.0及更高版本中,只需要将驱动的JAR...

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

    hana jdbc ngdbc.jar com.sap.db.jdbc.Driver

    2. 在代码中使用 `Class.forName()` 方法加载驱动类,例如:`Class.forName("com.sap.db.jdbc.Driver")`。 3. 使用 `DriverManager.getConnection()` 创建数据库连接,提供 HANA 数据库的 URL、用户名和密码,如:`...

    Cannot load JDBC driver class 'com.microsoft.sqlserver.jdbc.SQLServerDriver'

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); ``` 如果这个方法抛出ClassNotFoundException,表示驱动类没有找到。 4. **环境配置问题**:检查JDBC URL、用户名和密码是否正确设置。这些...

    sqljdbc4.jar

    2. **建立连接**:使用`Class.forName()`方法加载驱动,例如:`Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")`。 3. **创建连接**:使用`DriverManager.getConnection()`方法创建数据库连接,...

    sql jdbc 2.0.1607.1 UNIX

    Therefore, applications do not need to call the Class.forName method to register or load the driver when using the sqljdbc4.jar class library. When the getConnection method of the DriverManager ...

    sun.jdbc.odbc.jdbcodbcdriver-Maven.zip

    在Java的早期版本中,这个类位于`sun.jdbc.odbc`包下,可以直接通过Class.forName()方法加载并注册到JDBC驱动管理器,例如: ```java Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ``` 然后,通过创建适当的URL...

    sun.jdbc.odbc.JdbcOdbcDriver下载

    jdbc-odbc驱动包,提示找不到驱动,java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver, 原因:从jdk从1.8开始,删除了jdbc-odbc桥,所以odbc的驱动是用不了的 解决方法:这里为提供一个解决JDK1.8不...

    sqljdbc.jar和sqljdbc4.jar

    2. 配置连接:使用`Class.forName()`方法加载驱动,例如`Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");` 3. 创建连接:使用`java.sql.DriverManager.getConnection()`方法创建数据库连接,提供...

    access_jdbc3.0.jar驱动+代码.zip

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ``` 这行代码告诉Java虚拟机(JVM)使用JDBC-ODBC桥驱动。 2. 创建数据库连接: ```java Connection conn = DriverManager.getConnection("jdbc:odbc:...

    sun.jdbc.odbc.JdbcOdbcDriver.zip

    使用JDBC-ODBC桥之前,开发者需要在系统中设置合适的ODBC数据源,然后在Java代码中通过"Class.forName()"加载驱动并建立数据库连接。 总结来说,"sun.jdbc.odbc.JdbcOdbcDriver.zip"是一个包含Java的JDBC-ODBC桥的...

    sqljdbc41.jar和mysql-connector-java-5.1.13-bin.jar

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=myDB", "username", "password"); ``` 而对于...

Global site tag (gtag.js) - Google Analytics