当前位置 博文首页 > @王某人:JDBC详解

    @王某人:JDBC详解

    作者:[db:作者] 时间:2021-06-17 21:13

    简介:

    ?????JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多 种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可 以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序

    ??????Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰 出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。

    ??????JDBC可以在各种平台上使用Java,如Windows,Mac OS和各种版本的UNIX。

    ??????JDBC库包括通常与数据库使用相关的下面提到的每个任务的API。
    ????????????- 连接数据库。
    ????????????- 创建SQL或MySQL语句。
    ????????????- 在数据库中执行SQL或MySQL查询。
    ????????????- 查看和修改生成的记录。

    JDBC体系结构

    ??????JDBC API支持用于数据库访问的两层和三层处理模型,但通常,JDBC体系结构由两层组成:
    ????????????- JDBC API:这提供了应用程序到JDBC管理器连接。
    ????????????- JDBC驱动程序API:这支持JDBC管理器到驱动程序连接。
    JDBC API使用驱动程序管理器和特定于数据库的驱动程序来提供与异构数据库的透明连接。
    在这里插入图片描述

    JDBC核心组件(核心类)

    ??????DriverManager:
    ???????????? 此类管理数据库驱动程序列表。使用通信子协议将来自java应用程序的连接请求 与适当的
    ????????????数据库驱动程序匹配。
    ??????Driver:
    ????????????此接口处理与数据库服务器的通信,我们很少会直接与Driver对象进行交互。而是使用
    ????????????DriverManager对象来管理这种类型的对象。
    ??????Connection:
    ????????????该界面具有用于联系数据库的所有方法。连接对象表示通信上下文,即,与数据库 的所有
    ????????????通信仅通过连接对象。
    ??????Statement:
    ????????????使用从此接口创建的对象将SQL语句提交到数据库。除了执行存储过程之外,一些派 生接
    ????????????口还接受参数。
    ??????ResultSet:
    ????????????在使用Statement对象执行SQL查询后,这些对象保存从数据库检索的数据。它作为一 个迭
    ????????????代器,允许我们移动其数据。
    ??????SQLException:
    ????????????此类处理数据库应用程序中发生的任何错误

    使用步骤

    ??????构建JDBC应用程序涉及以下六个步骤:

    • 导入包:需要包含包含数据库编程所需的JDBC类的包。大多数情况下,使用import
      java.sql.*就足够 了。
    • 注册JDBC驱动程序:要求您初始化驱动程序,以便您可以打开与数据库的通信通道。
      Class.forName(“com.mysql.cj.jdbc.Driver”);
      Mysql8.0以前去掉.cj
    • 打开连接:需要使用DriverManager.getConnection()方法创建一个Connection对象,该
      对象表 示与数据库的物理连接。
    • 执行查询:需要使用类型为Statement的对象来构建和提交SQL语句到数据库。
    • 从结果集中提取数据:需要使用相应的ResultSet.getXXX()方法从结果集中检索数据。
    • 释放资源:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。

    JDBC连接步骤

    • 导入JDBC包:将Java语言的import语句添加到Java代码中导入所需的类。
    • 注册JDBC驱动程序:此步骤将使JVM将所需的驱动程序实现加载到内存中,以便它可以满足您
      的JDBC 请求。
    • 数据库URL配置:这是为了创建一个格式正确的地址,指向要连接到的数据库。
    • 创建连接对象:最后,调用DriverManager对象的getConnection()方法来建立实际的数据库
      连 接。
      Class.forName();
      ?????注册驱动程序最常见的方法是使用Java的Class.forName()方法,将驱动程序的类文件动态
      ?????加载到内存中,并将其自动注册
      ??????????Class.forName(“com.mysql.cj.jdbc.Driver”);
      ?????第二种方法是使用静态DriverManager.registerDriver()方法。
      ??????????Driver myDriver = new com.mysql.cj.jdbc.Driver();
      ??????????DriverManager.registerDriver( myDriver );
      数据库URL配置:
      ?????加载驱动程序后,可以使用DriverManager.getConnection()方法建立连接。
      ?????三个重载的DriverManager.getConnection()方法:
      ??????????- getConnection(String url)
      ??????????- getConnection(String url,Properties prop)
      ??????????- getConnection(String url,String user,String password)
      在这里插入图片描述
      ?????创建数据库连接对象:
      ??????????String URL = “jdbc:mysql://localhost:3306/yhp2?serverTimezone=UTC”;
      ??????????String USER = “username”;
      ??????????String PASS = “password”
      ??????????Connection conn = DriverManager.getConnection(URL, USER, PASS);

    ?????使用数据库URL和属性对象
    在这里插入图片描述
    ?????关闭数据库连接
    ??????????为确保连接关闭,您可以在代码中提供一个“finally”块。一个finally块总是执行,不管是否发
    ??????????生异常。 要关闭上面打开的连接,你应该调用close()方法如下 -
    ???????????????conn.close();

    JDBC执行SQL语句

    ?????一旦获得了连接,我们可以与数据库进行交互。JDBC Statement和PreparedStatement接口定
    ?????义了使 您能够发送SQL命令并从数据库接收数据的方法和属性。
    ?????用于对数据库进行通用访问。运行时使用静态SQL语句时很有用。Statement接口不能接受参数
    ?????当您计划多次使用SQL语句时使用。PreparedStatement接口在运行时接受 输入参数。
    ?????Statement:
    ??????????创建语句对象(状态通道)
    ??????????在使用Statement对象执行SQL语句之前,需要使用Connection对象的createStatement()
    ??????????方法创建 一个
    ???????????????Statement stmt = null;
    ???????????????stmt = conn.createStatement( );
    ??????????创建Statement对象后,您可以使用它来执行一个SQL语句,其中有三个执行方法之一。

    • boolean execute(String SQL):
      如果可以检索到ResultSet对象,则返回一个布尔值true; 否则返 回false。使用此方法执
      行SQL DDL语句或需要使用真正的动态SQL时。
    • int executeUpdate(String SQL):
      返回受SQL语句执行影响的行数。使用此方法执行预期会影响 多个行的SQL语句,例如
      INSERT,UPDATE或DELETE语句。
    • ResultSet executeQuery(String SQL):
      返回一个ResultSet对象结果集。当您希望获得结果集时,请使 用此方法,就像使用
      SELECT语句一样。
      取出结果集:
    while(resultSet.next()){         //判断是否有下一条
        //取出数据   resultSet.getxxx("列明");    xxx代表数据类型
    }
    

    ?????关闭Statement对象
    ??????????就像我们关闭一个Connection对象以保存数据库资源一样,由于同样的原因,还应该关
    ??????????闭Statement对 象。
    ??????????一个简单的调用close()方法将执行该作业。如果先关闭Connection对象,它也会关闭
    ??????????Statement对 象。但是,应始终显式关闭Statement对象,以确保正确清理。
    ?????注意:关闭所有资源时要先判断是否为空

    上一篇:没有了
    下一篇:没有了