java各接口中的函数是在哪里实现的
问题一:package java.sql;
public interface Statement {
ResultSet executeQuery(String sql) throws
SQLException;
int executeUpdate(String sql) throws SQLException;
void close() throws SQLException;
int getMaxFieldSize() throws SQLException;
void setMaxFieldSize(int max) throws SQLException;
}
就比方说以上几个,我只列了这几个。我们用数据库查询功能时直接写Statement 语句,但这些函数也直接用了,不知这些函数是如何实现的?
请高手指教!谢谢!
问题二:
java中有native函数,这是通过java调用本地虚拟机中的函数实现的,这个和以上函数实现的方式有区别吗?
------解决方案--------------------每个JDBC,你不是先要加载数据库的驱动程序嘛?这些就是在驱动程序中实现的。
------解决方案--------------------這些接口是你倒入的數據庫類庫中的類實現的,比如class12.jar
------解决方案--------------------JDBC是一套标准,没有源码,要说源码,基本上全是接口定义。
也就是说,JDBC定义了所有的接口标准,具体代码交给驱动程序编写者去实现。
做为应用开发人员,研究驱动程序代码意义不大,JDBC的初衷就是要让数据访问透明化,将不同数据库的访问方式统一起来。再说,驱动程序的底层代码相当多,而且一般是不开源的。
------解决方案--------------------JDBC 一般通过 TCP/IP 协议与数据库连接的,也需要使用 Socket 的,具体的实现各种数据库都不相同,可能与 DBMS 的物理结构、设计以及与外部通信协议有关系吧。
SQL Server 和 Oracle 的驱动没有看到过源代码,但 MySQL 可以找到源代码,这些驱动的代码量是非常庞大的,不熟悉 DBMS 的架构的话,是很难看懂的。
------解决方案--------------------帮顶,接分
------解决方案--------------------那些东西是在驱动里实现的。
比如Oracle是在class12.jar这个驱动里实现的。
SQL Server2000有三个jar:msbase.jar,mssqlserver.jar msutil.jar。
不是写在JDK源码里的,因为不同的数据库实现的方式不一样,这些东西是靠各数据产商写的,而不是SUN公司写的,SUN公司只是提供了这个接口。
就像你的电脑上的USB接口一样,可以接MP3,又可以接游戏手柄,也可以接打印机一样。电脑主板只是提供这个接口。USB的接口有四条线,两条数据线,两条电源线,只要接上去的部件依照这个接口来做,就可以正常工作。
就像Connection这个接口,有个createStatement方法,这个方法体是空的,具体的实现在不同的JDBC驱动里是不一样的。