在JDBC中,我看到这Connection是一个接口,它定义了与Database交互的方法.
我也知道接口只包含抽象方法,无法实例化
但是在JDBC代码中,以下是如何工作的,
Connection connection = DriverManager.getConnection("URL String");
Statement statement=connection.createStatement();
Run Code Online (Sandbox Code Playgroud)
根据我的怀疑createStatement()应该是一个抽象的方法,我...没有任何身体
但是每件事情都很好......有了这个
谁能解释一下?
JDBC就像任何驱动程序机制一样 - 人们和Sun(现在的Oracle)提前定义了Java用来与数据库交互的接口(或契约).然后,数据库供应商的响应能力是提供该接口的实现,以便将其特定数据库与Java一起使用.
这里的内容是JDBC API定义了Java与数据库交互的标准接口,显而易见的好处是,只要您的代码使用JDBC API,无论您使用何种数据库,它都将是合理统一的,这意味着因此,您可以将一个实现与另一个实现交换(尽管在实践中并不总是如此简单).
关于如何使用java.sql.DriverManager注册JDBC API的实现,过去常见的是您的代码需要显式加载实现java.sql.Driver的类; 加载类的行为导致它在java.sql.DriverManager中注册.此机制现在已替换为服务提供者,但最终结果仍然相同:
的一个或多个实现java.sql.Driver中与注册java.lang.DriverManager中.
然后,如果您查看java.sql.DriverManager.getConnection(String)的源代码,您将看到它只是循环遍历已注册的驱动程序,直到找到一个接受连接url的那个,此时java.sql.DriverManager调用java.sql.Driver.connect(String,Properties)方法,返回java.sql.Connection的具体实现.
| 归档时间: |
|
| 查看次数: |
2795 次 |
| 最近记录: |