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