java - Class.forName() 方法对 JDBC 有什么作用?

标签 java jdbc

<分区>

我发现 Class.forName 方法初始化静态 block 。

Class.forName("com.mysql.jdbc.Driver").newInstance();

jdbc 4.0以后就不需要调用这个方法了。但是即使在jdbc 4.0 版本之后,人们仍然使用这种方法。我的问题是为什么我用jdbc 4.0还需要用这个方法? JDBC 4.0 及之后的 Class.forName() 方法有什么作用?

这是我的示例代码。我只将 mysql-connector.jar 添加到我的库中,当我运行这段代码时,它运行完美。

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306","root","root");
Statement stmt = con.createStatement();
System.out.println("Created DB Connection....");

最佳答案

它获取由给定 FQN 表示的 Class 对象。如果之前没有加载,它也会加载类。这具有初始化静态类变量和运行任何静态 block 的副作用。

对于最新的 JDBC 版本,您不再需要 Class.forName() 来加载驱动程序,对于旧的驱动程序版本,它过去是并且是必需的。

关于java - Class.forName() 方法对 JDBC 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42131676/

相关文章:

java - Gwt-gdata认证

java - oracle.jdbc.OracleCallableStatement 强制转换异常

java - 将 Java Set 转换为PreparedStatement setString 方法的参数

java - 使用 JButton 对象的嵌套 ActionListener 类时出现错误?

java - 打乱 LinkedList 时出现 ArrayIndexOutOfBoundsException

Java 文本文件搜索

java - 在 MySQL 中同时从不同客户端以同一用户身份登录是否安全?

java - Java EE 中的 Unicode 并将问号保存在数据库中

python-3.x - 如何在我的 spark 2.4.7 中连接和写入 postgres jdbc?

java - 如何创建 TestNg 类