差异Java连接方法(ClassForname和RegisterDriver)

差异Java连接方法(ClassForname和RegisterDriver),java,mysql,sql-server,database,connection,Java,Mysql,Sql Server,Database,Connection,我知道连接数据库的两种方法,我将其分为两种方法(方法1和方法2) 我的问题是,;他们之间有什么区别吗?方法1使用Class.forName,而方法2使用registerDriver 它们之间的优缺点是什么 注意:我只能在方法2上使用PreparedStatement。从JDBC 4.0开始,Java开发人员不再需要使用Class.forName()之类的代码显式加载JDBC驱动程序来注册JDBC驱动程序。DriverManager类通过在调用DriverManager.getConnection

我知道连接数据库的两种方法,我将其分为两种方法(方法1和方法2)

我的问题是,;他们之间有什么区别吗?方法1使用
Class.forName
,而方法2使用
registerDriver

它们之间的优缺点是什么


注意:我只能在方法2上使用PreparedStatement。

从JDBC 4.0开始,Java开发人员不再需要使用Class.forName()之类的代码显式加载JDBC驱动程序来注册JDBC驱动程序。DriverManager类通过在调用DriverManager.getConnection()方法时自动定位合适的驱动程序来解决这个问题。此功能是向后兼容的,因此不需要对现有JDBC代码进行任何更改。

JDBC很长时间以来都不需要这两种代码。仅调用DriverManager.getConnection就足够了。VGR是正确的。所有较新的JDBC驱动程序都将自动注册。这是由Driver.jar文件中的文件
META-INF/services/java.sql.Driver
完成的。如果您的driver.jar文件有这个条目,则不需要这两种方法。如果没有,你应该考虑升级到一个更新版本的驱动程序。至于你的问题,主要的区别在于方法2需要驱动程序在编译时出现。
Connection connection;

public void getConnectionMethod1() {
    try {
        Class.forName("net.sourceforge.jtds.jdbc.Driver");
        connection = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/latihan","sa","denni");
    } catch (SQLException e) {
    }
}

public void getConnectionMethod2() {
    try {
        DriverManager.registerDriver(new net.sourceforge.jtds.jdbc.Driver());
        connection = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/latihan","sa","denni");
    } catch (SQLException e) {
    }
}