• 01.JDBC技术摘要


    JDBC概念

    Java DataBase Connectivity(Java数据库连接技术)

    它是将Java与SQL结合且独立于特定的数据库系统的应用程序编程接口(API-它是一种可用于执行SQL语句的JavaAPI,即由一组用Java语言编写的类与接口所组成)

    JDBC设计的目的

    它是一种规范,设计出来的主要目的是为了让各个数据库开发商为Java程序员提供标准的数据访问类和接口,使得独立于DBMS的Java应用程序的开发成为可能(数据库改变,驱动程序跟着改变,但是应用程序不变)
    Java设计规范接口,各大数据库产商遵守规范实现,Java程序员不需要考虑实现细节,只需要调用API即可

    JDBC组成
    JDBC API (统一的应用接口)
    JDBC Driver Manager(驱动程序管理器)
    JDBC 数据库驱动程序 驱动本质就是一个Java类,这个类实现了JavaAPI定义的接口
    一般情况下,在应用程序中进行数据库连接,调用JDBC接口,首先要将特定厂商的JDBC驱动实现加载到系统内存中,然后供系统使用

    JDBC的层次结构
    JDBC API提供了以下接口和类:
    DriverManager: 这个类管理数据库驱动程序的列表。确定内容是否符合从Java应用程序使用的通信子协议正确的数据库驱动程序的连接请求。识别JDBC在一定子协议的第一个驱动器将被用来建立数据库连接。
    Driver: 此接口处理与数据库服务器通信。很少直接直接使用驱动程序(Driver)对象,一般使用DriverManager中的对象,它用于管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息
    Connection:Driver 或者 DriverManager根据连接的url 和参数信息创建Connection实例,用来维持和数据库的数据通信,如果没有销毁或者调用close()对象,此对象和数据库的对象会一直保持连接;
    Statement:Connection创建Statement对象,表示需要执行的sql语句或者存储过程;
    ResultSet: 表示Statement执行完SQL语句后返回的结果集。
    SQLException: 这个类用于处理发生在数据库应用程序中的任何错误。

    (1)Collection角色

    在一般实际使用情况下,我们关注的Connection的功能有以下几点:
    • 创建可以执行sql语句或者存储过程的对象statement,用来和数据库进行交互;
    比如,以下代码创建了几种不同类型的Statement:
    Statement staticStatement= connection.createStatement();
    //创建CallableStatement 对象来调用数据库存储过程。
    CallableStatement callableStatement = connection.prepareCall(sqlString);
    //创建参数化的Statement对象
    PreparedStatement preparedStatement = connection.prepareStatement(sqlString);
    • 控制sql语句的事务;
    Connection默认情况下,对于创建的statement执行的sql语句都是自动提交的,即在statement语句执行完后,自动执行commit操作,将结果影响到物理数据库。为了满足更好地事务控制需求,我们也可以手动地控制事务,手动地对statement 的sql语句执行进行提交(commit)或者回滚(rollback)。
    String sqlString="insert into tableName(column1,column2) values(value1,value2)";
    //加载Oracle数据库驱动
    Class.forName("oracle.jdbc.driver.OracleDriver");
    //根据特定的URL,返回可以接受此URL的数据库驱动对象
    Driver driver = DriverManager.getDriver(URL);
    //使用数据库驱动创建数据库连接Connection会话
    connection = driver.connect(URL, props);
    //使用自定义的事务,要设置connection不自动提交
    connection.setAutoCommit(false);
    //创建静态的sql语句 Statement 对象来将 SQL 语句发送到数据库。
    Statement staticStatement= connection.createStatement();
    try{
    //执行插入操作
    staticStatement.execute(sqlString);
    staticStatement.getConnection().commit();//和上面的connection等价,statement只有一个创建自身的connection的引用
    }catch(Exception e)
    {
    //有异常,则rollback
    staticStatement.getConnection().rollback();
    }
    • 获取数据库连接的元数据,即数据库的整体综合信息。
    连接的数据库整体信息被封装在了一个 DatabaseMetaData类型的对象上,可以通过以下代码获得:
     DatabaseMetaData databaseMetaData = connection.getMetaData();
     
    (2)Statement角色
    Statement 的功能在于根据传入的sql语句,将传入sql经过整理组合成数据库能够识别的sql语句(对于静态的sql语句,不需要整理组合;而对于预编译sql语句和批量语句,则需要整理),然后传递sql请求,之后会得到返回的结果。
    对于查询sql,结果会以ResultSet的形式返回。

     

  • 相关阅读:
    文件上传利用总结
    通过WebGoat学习java反序列化漏洞
    C# Bat批处理文件创建、执行
    C# 删除目录下所有文件
    是时候做一点属于自己的东西了
    2021.09.26省市县三级联动最新数据库,附脚本
    SpringBoot 整合Easy Poi 下载Excel(标题带批注)、导出Excel(带图片)、导入Excel(校验参数,批注导出),附案例源码
    NeRF 核心思想简记
    R-CNN系列核心思想简单记录
    HeapDump性能社区Young GC异常问题排查实战案例精选合集
  • 原文地址:https://www.cnblogs.com/wangdh666/p/10719836.html
Copyright © 2020-2023  润新知