日期:2014-05-20  浏览次数:20859 次

Connection接口的若干疑问
Connecttion conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","6360123");
Statement stmt=conn.createStatement();  

1、createStatement()方法不是抽象方法吗,它什么时候被实现的?
2、调用getConnection()后,是否会返回一个默认Connection接口实现类的conn对象,并且实现类已经实现了Connection接口中的所有抽象方法?

------解决方案--------------------
Java code
Connecttion conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","6360123");
System.out.println(conn.getClass());  // 想看这个对象具体的实现就这样做
Statement stmt = conn.createStatement();

------解决方案--------------------
1、包java.sql.Connection是接口,这个接口可以是Oracle实现,也可以是mysql实现。
2、mysql对Connection具体的实现是这个类:com.mysql.jdbc.JDBC4Connection
------解决方案--------------------
1、createStatement()方法不是抽象方法吗,它什么时候被实现的?
在驱动中
Class.forName("......"),载入了驱动
DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","6360123");
通过url创建了相应实现Connection类的对象

2、调用getConnection()后,是否会返回一个默认Connection接口实现类的conn对象,并且实现类已经实现了Connection接口中的所有抽象方法?
是返回一个Connection接口实现类的conn对象(如MySQL驱动中Connection).
返回的对象中肯定是没有抽象方法的,如个一个类实现一个接口没有实现全部的方法,这个内只能是抽象类,而抽象类是不能创建对象的



------解决方案--------------------
1.Connection是一个接口,每种数据库都有其对应的实现,这就是为什么我们在连数据库的时候需要引入第三方包的原因了。这些实现都在那个包里面的。
2.他会根据你的url返回一个实现了Connection接口的实例对象。