谁在这个java程序中实现了连接、结果集和语句接口?

谁在这个java程序中实现了连接、结果集和语句接口?,java,interface,Java,Interface,我最近发现以下程序中使用的语句、连接和结果集都是接口。这个程序运行得很好,但是谁实现了这些接口呢 package jdbc; import java.sql.*; public class Mango { public static void main(String[] args) throws Exception { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection co

我最近发现以下程序中使用的语句、连接和结果集都是接口。这个程序运行得很好,但是谁实现了这些接口呢

package jdbc;

import java.sql.*;

public class Mango {

    public static void main(String[] args) throws Exception {
        Class.forName("oracle.jdbc.driver.OracleDriver");   
        Connection con = DriverManager.getConnection("jdbc:oracle:thin:@66.66.66.128:1521:xe","SYSTEM","matrix");
        Statement comm = con.createStatement();
        comm.executeQuery("insert into a values('a',1)");
        ResultSet res = comm.executeQuery("SELECT * FROM A");
        comm.executeQuery("insert into a values('a',1)");
        while(res.next()) {
            System.out.println(res.getString(1) + " " + res.getInt(2));
        }
    }

}

JDBC驱动程序提供程序提供了可以执行此操作的实现。在这种情况下,甲骨文

 System.out.println("con class is "+ con.getClass());
 System.out.println("comm class is "+ comm.getClass());
 System.out.println("res class is "+ res.getClass());

顺便说一句,使用完资源后不要忘记关闭它们,否则您可以获得内存许可。

JDBC API是通过各种数据库软件供应商提供的JDBC驱动程序实现的


JDBC驱动程序是一组实现JDBC接口的类,用于处理JDBC调用并将结果集返回到Java应用程序

这些接口类型的实现是特定于供应商的。 例如,如果您正在使用Mysql,并且已经将Mysql Jar放在类路径中,那么实现类如下所示:

1. java.sql.Statement [Interface] -> com.mysql.jdbc.StatementImpl [Class]

2. java.sql.Connection [Interface] -> com.mysql.jdbc.MySQLConnection [Interface] -> com.mysql.jdbc.ConnectionImpl [Class]

3. java.sql.ResultSet [Interface] -> com.mysql.jdbc.ResultSetImpl [Class]

数据库供应商提供第三方驱动程序,JDBC-ODBC驱动程序通过该驱动程序与数据库通信。这些第三方驱动程序具有某些类,这些类实现接口并根据需求编写其主体。因此,当您从mysql数据库移动到oracle数据库时,驱动程序的主体会发生变化。

接口语句、连接和结果集最终由第三方JDBC驱动程序提供程序实现

假设您使用的是MySQL驱动程序,这就是实现的层次结构

  • java.sql.Statement接口最终由com.mysql.jdbc.statementinpl类实现。
  • 内部实现层次结构:

    com.mysql.jdbc.StatementImpl(类)-->实现-->com.mysql.jdbc.Statement(接口)-->扩展-->java.sql.Statement(接口)

  • java.sql.Connection接口最终由com.mysql.jdbc.JDBC4Connection类实现。
  • 内部实现层次结构:

    com.mysql.jdbc.jdbc4连接(类)-->扩展-->com.mysql.jdbc.ConnectionImp(类)-->扩展-->com.mysql.jdbc.ConnectionPropertiesImpl(类)-->实现-->com.mysql.jdbc.MySQLConnection(接口)-->扩展-->com.mysql.jdbc.Connection(接口)-->扩展-->java.sql.Connection(接口)

  • java.sql.ResultSet接口最终由com.mysql.jdbc.ResultSetImpl类实现。
  • 内部实现层次结构:


    com.mysql.jdbc.ResultSetImpl(类)-->实现-->com.mysql.jdbc.ResultSetInternalMethods(接口)-->扩展-->java.sql.ResultSet(接口)

    它们在oracle jdbc驱动程序中实现。您正在使用的类。您正在实例化的类,位于=