其实Java JDK中并没有实现特定数据库的链接问题,只是提供了一些标准规范供各数据库生产厂商去实现自己数据库驱动包。
这里的Connection确实是一个接口,其实这个接口就相当于提供了一个规范,听说过“面向接口编程而不是面向实现编程”这个设计原则吧。这是为了让程序的耦合性减小,增加扩展,如果出现一个新的数据库厂商,只要他的驱动符合这个接口标准就可以了。所以这个Connection应该是不同数据库厂商有不同实现。很高兴你已经有看文档的习惯了。你多看点jdk文档是有好处的。
希望我的回答对你有所帮助。
我用jad反编译了DriverManager源代码,发现他的调用流程是这样的:
DriverManager类中的getConnection方法调用的是DriverInfo中的connect方法.如下:
DriverInfo driverinfo;
Connection connection = driverinfo.driver.connect(s, properties);
connect是Driver接口中的方法.按ctrl+t 发现调用的是JdbcOdbcDriver类的connect方法.
JdbcOdbcConnection jdbcodbcconnection = new JdbcOdbcConnection(OdbcApi, hEnv, this);最终返回的也是这个类的对象,而这个类继承的JdbcOdbcObject,实现的JdbcOdbcConnectionInterface接口.如下:
public class JdbcOdbcConnection extends JdbcOdbcObject
implements JdbcOdbcConnectionInterface
这个接口继承的是Connection接口,如下:
public interface JdbcOdbcConnectionInterface
extends Connection
所以返回到最初调用处.用Connection接口来接收.
不知道我说的是否明白.
这里的实现类是数据库的生产厂商提供的,JAVA中的接口是sun指定的一系列标准,是为了编程的统一性,就象如果需要更换数据库直需要多天加一个驱动包和更改一下数据库配置文件就好了,不需要更改太多的代码就兴了…希望能帮你一理解一些