java - 更好地理解 - Class.forName ("com.mysql.jdbc.Driver".newInstance ();

标签 java mysql

我遇到了 this helpful link with code它在更新以攻击我的网络服务器时完美运行。我绝对可以做任何事情。

现在,我唯一不完全理解的是 Class.forName()

为什么要使用它?这可以做不同的吗?这是解决其他问题的方法吗?添加引用?创建一个类作为实现/扩展另一个类?

我想完全了解正在发生的事情,但这妨碍了我。

谢谢

最佳答案

该代码强制加载和初始化代表 MySQL 驱动程序的类。在 Java 中,除非有必要加载类,否则不会加载该类。由于 JDBC 代码通常从不直接引用驱动程序,因此如果没有 Class.forName(或其他一些等效的替代方法),它就不会被加载。

请注意,加载初始化 类都是必要的,这是两件不同的事情。

另外,请注意,不必调用 .newInstance() —— 驱动程序的静态初始化程序已经将自己注册为 JDBC 驱动程序。

最后,请注意,使用 Service Loader API 通常不需要调用 Class.forName() 来加载驱动程序:它可以自动加载。

关于java - 更好地理解 - Class.forName ("com.mysql.jdbc.Driver".newInstance ();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12933113/

相关文章:

mysql - 嵌套 MySQL 查询失败,错误代码为 `Error Code 1060 Duplicate column name ' xxx'`

mysql - 错误: Unknown column <value> in 'where clause'

java - UTC 到本地日期转换

php - Select/SelectAll 删除 在 PHP MySQL/AJAX Jquery 中不起作用

java - Ormlite 查询生成器条件

java - 远程主机在握手期间关闭连接 - 帮助菜鸟

java - 将 Java 库添加到 Netbeans Grails 项目

java - 如何计算数组中的唯一元素?只需要想法

mysql - 从 Django 中的两个表获取 MAX() ——相当于使用 SQL UNION

java - 玩!用作第二个 Play 项目的库依赖项的框架项目