美文网首页
【MySql】jdbc

【MySql】jdbc

作者: Y了个J | 来源:发表于2020-07-19 23:23 被阅读0次

1.sun公司制定接口标准:Connection接口和DriverManager类(Connection接口提供操作数据库的抽象方法,待数据库厂商实现;DriverManager类提供给数据库厂商注册连接和获取连接的方法)
2.数据库厂商实现Connection接口中的方法(用来定义具体的数据库操作)
3.数据库厂商自定义驱动文件Driver类,将2中的连接注册到SUN提供的DriverManager中(此过程在静态代码块中,确保类被加载时即可执行)
4.程序员通过Class.for("");加载驱动文件,并获取连接,进而对数据库进行操作

SUN公司:
首先,SUN公司定义了一个接口类:

public interface Connection {
    public void f1();
}

同时,SUN公司定义了一个驱动管理类:

public class DriverManager {
 
    public static Connection conn = null;
 
    /**
     * 注册连接
     *
     * @param connection
     */
    public static void registConnection(Connection connection) {
        conn = connection;
    }
 
    /**
     * 获取连接
     *
     * @return
     */
    public static Connection getConnection() {
        return conn;
    }
}

数据库厂商:(如Oracle、MySQL等)
各数据库厂商实现SUN制定的接口标准,如:
Oracle

/**
 * @Description:Oracle数据库厂商实现的接口类
 *
 * @author:Oracle
 */
public class ConnectionOracleImpl implements Connection {
 
    @Override
    public void f1() {
        // 这里实现Oracle操作数据库的具体方法,封装在.jar文件中,供程序员调用
        System.out.println("Oracle的f1()方法实现");
    }
}

或者MySQL

/**
 * @Description:MySQL数据库厂商实现的接口类
 *
 * @author:MySQL
 */
public class ConnectionMySQLImpl implements Connection {
 
    @Override
    public void f1() {
        //这里实现MySQL操作数据库的具体方法,封装在.jar文件中,供程序员调用
        System.out.println("MySQL的f1()方法实现");
    }
}

同时,数据库厂商定制自己的驱动类,并通过静态代码块,确保该驱动类被加载时,SUN的驱动管理类可以注册厂商的数据库连接,如:

Oracle

/**
 * @Description:Oracle厂商制定的驱动类
 *
 * @author:Oracle
 */
public class OracleDriver {
    static {
        DriverManager.registConnection(new ConnectionOracleImpl());
    }
}

MySQL

/**
 * @Description:MySQL厂商制定的驱动类
 *
 * @author:MySQL
 */
public class MySQLDriver {
    static {
        DriverManager.registConnection(new ConnectionMySQLImpl());
    }
}

开发者:
开发人员引入某个数据库厂商的驱动文件,即可调用内部方法操作数据库,如:

/**
 * @Description:开发人员
 *
 * @author:me
 */
public class Test2 {
 
    public static void main(String[] args) throws Exception {
        Class.forName("test.OracleDriver");// 虚拟机根据类名找到字节码文件
        Connection con = DriverManager.getConnection();
        con.f1();
 
        Class.forName("test.MySQLDriver");// 虚拟机根据类名找到字节码文件
        Connection con2 = DriverManager.getConnection();
        con2.f1();
    }
}

相关文章

网友评论

      本文标题:【MySql】jdbc

      本文链接:https://www.haomeiwen.com/subject/rqarkktx.html