DAY 发表于 2019-8-31 11:21:56

[JDBC]通过Driver接口获取数据库连接

本帖最后由 DAY 于 2019-8-31 13:52 编辑

http://pic1.win4000.com/pic/6/51/1424c18261.jpg
数据的持久化
    持久化:把数据保存到可掉电式存储设备中以供之后使用,大多数情况下,特别是企业级应用,数据持久化的实现过程大多数通过各种关系数据库来完成。
    持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、xml数据文件中。

Java中的数据存储技术
    在Java中,数据库存储技术可分为如下几类:
      JDBC直接访问数据库
      JDO技术
      第三方O/R工具,如Hibernate,ibatis等
    JDBC是Java访问数据库的基石,JDO,Hibernate等只是更好的封装了JDBC。

JDBC基础
    JDBC是一个独立于特定数据库管理系统,通用的sql数据库存取和操作的公共接口,定义了用来访问
    数据库的标准Java类库,使用这个类库可以以一种标准的方法,方便地访问数据资源

    JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。

    JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员
    无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

JDBC体系结构
    JDBC接口(API)包括两个层次:
      -面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行sql语句,获得结果)

      -面向数据库的API:Java Driver API,供开发商开发数据库驱动程序用。

JDBC驱动程序分类
    JDBC驱动程序:各个数据库厂商根据JDBC的规范制作的JDBC实现类的类库

    JDBC去东莞程序总共有四种类型:
      -第一类:JDBC-ODBC桥
      -第二类:部分本地API部分JAVA的驱动程序
      -第三类:JDBC网络纯Java驱动程序
      -第四类:本地协议的纯Java驱动程序
      -第三,第四类都是纯Java的驱动程序,因此,对于Java开发者来说,它们在性能,可以移植性,功能等方面都有优势。

本地协议的纯Java驱动程序
    多数数据库厂商已经支持允许客户程序通过网络直接与数据库通信的网络协议。

    这种类型的驱动程序完全使用Java编写,通过与数据库的建立的socket连接,采用具体与厂商的网络协议把JDBC调用转换为直接连接的网络调用。

JDBC API
    JDBC API是一系列的接口,它使得应用程序能够进行数据库链接,执行sql语句,并且得到返回结果

Driver 接口
    Java.sql.Driver接口是所有JDBC驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现

    在程序中不需要直接去访问实现了Driver接口的类,而是由驱动程序管理器类(Java.sql.DriverManager)去调用这些Driver实现


//Driver 是一个接口:数据库厂商必须提供实现的接口,能从其中获取数据库连接。
public void testDriver(){

    //1.创建一个Driver实现类的对象
    //2.准备连接数据库的基本信息
    //3.调用Driver接口的connect(url,info)获取数据库连接
    Driver driver = new com.mysql.jdbc.Driver();
    String url = "jdbc:mysql://127.0.0.1:3306/test?";
    Properties info = new Properties();
    info.put("user","root");
    info.put("password","123");
    Connection connection = driver.connect(url,info)
}




编写一个通用的方法,在不修改源程序的情况下,可以获取任何数据库的连接
解决方案:把数据库驱动Driver实现类的全类名,url,user,pasword放入一个配置文件中,通过修改配置文件的
方法实现和具体的数据库解耦
public Connection getConnection() throws Exception{
    String driverClass = null;
    String jdbcUrl = null;
    String user = null;
    String password = null;

    //加载类路径下的JDBC.properties文件
    InputStream in = getClass().getClassLoader().getResourceAsStream("JDBC.properties")
    Properties properties = new Properties();
    properties.load(in);
    driverClass = properties.getProperty("driver");

    Driver driver= (Driver)class.forName(DriverClass).newInstance();
    Properties info = new Properties();
    info.put("user","root");
    info.put("password","123");
    Connection connection = driver.connect(url,info);

    return connection;
}



//oracle与mysql数据库Properties配置文件的书写

Oracle

driver=oracle.jdbc.driver.OracleDriver
jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl
user=scott
password=java

Mysql

driver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/test
user=root
password=1230
页: [1]
查看完整版本: [JDBC]通过Driver接口获取数据库连接