zoukankan      html  css  js  c++  java
  • 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的形式返回。

     

  • 相关阅读:
    扫面线模板
    (动态规划、栈)leetcode 84. Largest Rectangle in Histogram, 85. Maximal Rectangle
    tmux 常见命令汇总
    leetcode 221
    leetcode 319 29
    (贪心)leetcode 392. Is Subsequence, 771. Jewels and Stones, 463. Island Perimeter
    leetcode 982 668
    Python import 同文件夹下的py文件的函数,pycharm报错
    Windows里Anaconda-Navigator无法打开的解决方案
    Windows下 gpu版 Tensorflow 安装
  • 原文地址:https://www.cnblogs.com/wangdh666/p/10719836.html
Copyright © 2011-2022 走看看