java - Class.forName() 是什么意思

标签 java mysql class jdbc

<分区>

我正在学习 JDBC,唯一我不明白的是下面代码中的类 Class。

无论我是否删除 Class.forName("com.mysql.jdbc.Driver"),它都能正常工作。

能解释一下这部分的Class.forName("com.mysql.jdbc.Driver")是什么函数吗?

import java.sql.*;
public class JSP {

    public static void main(String[] args){
        Connection myConn = null;
        Statement st= null;
        ResultSet rs= null;

        try {
            Class.forName("com.mysql.jdbc.Driver");
            myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/customer", "root", "Gspot");

            st = myConn.createStatement();
            String query = "select * from customers";

            rs = st.executeQuery(query);
            while(rs.next()){
                System.out.println(rs.getString("name"));
            }
        } catch(SQLException e){
            e.printStackTrace();
        } catch(ClassNotFoundException e) {
            System.out.println("wow");
        }
    }
}

最佳答案

Class.forName 创建一个 java.lang.Class 的实例对应给定的名字。这会强制类加载器加载此类,并执行其 static block 中的任何代码。

较旧的 JDBC 驱动程序过去常常使用这些静态 block 将自己注册到 java.sql.DriverManager以便以后可以使用它们连接到数据库。 JDBC 4 是 Java 6 的一部分,引入了一种自动加载 JDBC 驱动程序的机制,因此不再需要。

关于java - Class.forName() 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26797717/

相关文章:

c++ - 无法使用 istream C++ 重载 >> 运算符

java - 线程中出现异常 "broadcast-exchange-0"java.lang.OutOfMemoryError : Not enough memory to build and broadcast the table to all worker nodes

java - Tomcat 8.0编译后JSP的java文件位置

java - 在 JAR 中组织 XSD

java - 从流中读取 PNG 文件

PHP 和 HTML 删除

mysql - 数据库关系循环,如何打破呢?

MYSQL-Access-Macro Error 字段列表中的未知列

c++ - 如何让一个类只能访问另一个类的某些私有(private)成员?

c# - 实现 IEnumerable<SqlDataRecord> 时无法访问 'Sum' 函数