gpt4 book ai didi

java - 我们知道我们不能创建接口(interface)对象,但是我们如何在jdbc中创建Statement或PrepareStatement对象呢?

转载 作者:行者123 更新时间:2023-12-01 23:03:38 25 4
gpt4 key购买 nike

Connection con = DriverManager.getConnection(url+db,username,password);
Statement st = con.createStatement();

最佳答案

创建的对象属于实现该接口(interface)的类。实际的级别取决于驱动程序。

getConnection()createStatement() 都是工厂方法。您可以编写使用接口(interface)的代码,但实际的类是实现该特定数据库的功能的。

DriverManager.getConnection() 的(不正确)实现如下:

public Connection getConnection(String url, String username, String password) {
if(url.startsWith("jdbc:mysql:") // We have MySQL
return new MySQLConnection();
else if(url.startsWith("SomethingElse")
return new OtherConnection();
}

实际上,实际的类是动态加载的,因此它不需要位于编译时类路径中。加载正确的类(如果找不到合适的类,则会抛出错误)并返回。从现在起,MySQLConnection 类将返回 MySQLStatement 等等。

你可以这样编写代码:

MySQLConnection con = (MySQLConnection)DriverManager.getConnection(url, user, pass);

但这将使您的代码数据库变得特定。在某些情况下,如果MySQLConnection类允许Connection接口(interface)中没有的某些功能,这是有必要的,但在大多数情况下,您只想处理java.sql.Connection 接口(interface),而不关心实际使用的是哪个数据库。

关于java - 我们知道我们不能创建接口(interface)对象,但是我们如何在jdbc中创建Statement或PrepareStatement对象呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23149473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com