Matrix42

不饱食以终日,不弃功于寸阴

JDBC之: JDBC驱动类加载以及建立连接(二)

什么是JDBC?

  • JDBC(Java DataBase Connection)为java开发者使用数据库提供了同一的编程接口,它由一组java类和接口组成.是java程序与数据库系统通信的标准API.JDBC API使得开发人员可以使用纯java的方式来连接数据库,并执行操作.

  • sun公司由于不知道各个主流商用数据库的程序代码,因此无法自己写代码连接各个数据库,因此,sun公司决定,自己提供一套api,凡是数据库相与java连接的,数据库厂商自己必须实现JDBC这套接口.而数据库厂商的JDBC实现,我们就叫它此数据库的数据库驱动

JDBC访问数据库流程

加载JDBC驱动程序->建立与数据库的连接->发送SQL查询->得到结果集

Driver接口

  • Driver接口由数据库厂家提供,由于java开发者而言,只需要使用Driver接口就可以了

  • 在编程中要连接数据库,必须先按照特定厂商的数据库驱动程序.不同的数据库有不同的装载方法

  • 驱动:就是各个数据库厂商实现Sun公司提出的JDBC接口.即对Connection等接口的实现类的jar文件

  • 装载MySQL驱动

    • Class.forName(“com.mysql.jdbc.Drier”);
  • 装载Oracle驱动
    • Class.forName(“oracle.jdbc.drier.OracleDriver”);

DriverManager接口

  • DriverManager是JDBC的管理层,作用于用户和驱动程序之间

  • DriverManager跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接

Connection接口

  • Connection与特定数据库的连接(会话),在连接上下文中执行SQL语句并返回结果

  • DriverManager的getConnection()方法建立在JDBC URL中定义的数据库Connection连接上

  • 连接MySQL数据库:

    Connection conn = 
    DriverManager.getConnection("jdbc:mysql://host:port/database","user","password");
    
  • 连接Oracle数据库
    Connection conn =
    DriverManager.getConnection("jdbc:oracle:thin@host:port:database","user","password");
    

Code

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * 测试与数据库建立连接
 * @author Matrix42
 *
 */
public class Demo01 {
    public static void main(String[] args) {

        try {
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            long start = System.currentTimeMillis();
            //建立连接 耗时 耗资源
            //连接对象内部包含了Socket对象,是一个远程的连接,比较耗时,这是Connection对象管理的一个要点!
            //真正开发中,为了提高效率,都会使用连接池来管理连接对象!
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","123456");
            long end = System.currentTimeMillis();
            System.out.println("建立连接耗时"+(end-start)+"ms");
            System.out.println(conn);

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

5 × 2 =