我使用的是来自java.sql包的接口连接
实际上,我认为它是一个类,但当我试图查看源代码时,我发现它是一个接口。
在Connection接口的源代码中,每个方法只有一行,没有任何实现!!
是什么让这个接口像这样工作呢?
要连接的数据库: MySql
连接源码页:http://www.docjar.com/html/api/java/sql/Connection.java.html
发布于 2012-07-23 06:19:38
它不是“工作”的接口,而是它的一个实现,这是特定于您的特定RDBMS供应商的。实际上,通常是供应商提供了Connection接口的实现。
当你调用
Connection conn = DriverManager.getConnection(
"jdbc:jdbc:mysql://localhost:3306/
, connectionProps);驱动程序管理器搜索已注册的JDBC驱动程序,找到MySQL的驱动程序(它从连接字符串中知道它是MySQL ),将连接属性传递给MySQL JDBC驱动程序中实现Connection的类的构造函数,并将生成的Connection实例返回给您。例如,驱动程序可能返回一个实现Connection的包私有类MySqlConnection的实例,而您的程序将使用它与RDBMS交互,而不知道关于该类的任何细节,除了它实现Connection这一事实之外。
发布于 2012-07-23 06:18:39
MySQL驱动程序(http://www.mysql.com/products/connector/)包含实际的实现。java.sql.Connection接口只定义了JDBC标准所期望的方法。每个数据库驱动程序都必须定义如何实际连接。
发布于 2013-05-01 22:56:44
下面是一些直接或间接实现java.sql.Connection接口的类的示例:
通过package名称空间,您可以知道它们来自哪个jdbc驱动程序。但这些实现类和其他实现类不能直接使用。正如dasblinkenlight所指出的,您应该针对JDBC API进行编程,而不是针对每个JDBC驱动程序库中提供的类进行编程。使用API将允许您切换RDBMS,而不会破坏java数据访问代码。
有趣的是,现在使用JDBC API的人越来越少了。许多人使用构建在JDBC之上的对象关系映射框架,比如Hibernate。
https://stackoverflow.com/questions/11604420
复制相似问题