jdbc_API中的说明

本文深入探讨了Java SQL API的核心组件及其版本演进,从JDBC1.0到JDBC4.0,详细介绍了API的结构、功能特性、版本更新以及SQL用户定义类型的自定义映射,旨在帮助开发者全面理解Java数据库访问技术。

软件包 java.sql 的描述

提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。此 API 包括一个框架,凭借此框架可以动态地安装不同驱动程序来访问不同数据源。尽管 JDBCTM API 主要用于将 SQL 语句传递给数据库,但它还可以用于以表格方式从任何数据源中读写数据。通过接口的 javax.sql.RowSet 组可以使用的 reader/writer 实用程序,可以被定制以使用和更新来自电子表格、纯文本文件或其他任何表格式数据源的数据。

JDBCTM 4.0 API 中包括的内容

JDBCTM 4.0 API 中包括 java.sql 包,被称为 JDBC 核心 API,和 javax.sql 包,被称为 JDBC Optional Package API。完整的 JDBC API 包含在 JavaTM 标准版 (Java SETM) 6 版中。javax.sql 包扩展了 JDBC API 的功能,将它从客户端 API 扩展到服务器端 API,该包是 JavaTM、企业版 (JavaTM) 技术的重要部分。

版本

JDBC 4.0 API 综合了以前所有 JDBC API 版本:
  • JDBC 3.0 API
  • JDBC 2.1 核心 API
  • JDBC 2.0 Optional Package API
    (注意,JDBC 2.1 核心 API 和 JDBC 2.0 Optional Package API 组合在一起被称为 JDBC 2.0 API。)
  • The JDBC 1.2 API
  • The JDBC 1.0 API

类、接口、方法、字段、构造方法和异常都有以下 "since" 标记,以指示它们何时被引入 Java 平台。当将这些 "since" 标记用于 JDBC API 的 JavadocTM 注释时,它们指示以下内容:

  • Since 1.6:JDBC 4.0 API 中的新内容和 Java SE 平台 6 版的部分内容
  • Since 1.4:JDBC 3.0 API 中的新内容和 J2SE 平台 1.4 版的部分内容
  • Since 1.2:JDBC 2.0 API 中的新内容和 J2SE 平台 1.2 版的部分内容
  • Since 1.1 或者没有 "since" 标记:原始 JDBC 1.0 API 和 JDKTM 1.1 版的部分内容

注:许多新特性都是可选的,因此,在这些版本支持的驱动程序和特性中有一些变体。在尝试使用它之前,总是检查驱动程序的文档,以查看它是否支持某一特性。

注:SQLPermission 类被添加到 JavaTM 2 SDK 标准版 1.3 版中。此类用于防止对与 DriverManager 相关联的记录流进行无授权访问,该流可以包含诸如表名称、列数据等信息。

java.sql Package 包含的内容

java.sql 包中包含用于以下方面的 API:
  • 通过 DriverManager 实用程序建立与数据库的连接
    • DriverManager 类:建立与驱动程序的连接
    • SQLPermission 类:当代码在 Security Manager(比如 applet)中运行时提供权限,试图通过 DriverManager 设置一个记录流
    • Driver 接口:提供用来注册和连接基于 JDBC 技术(“JDBC 驱动程序”)的驱动程序的 API,通常仅由 DriverManager 类使用
    • DriverPropertyInfo 类:提供 JDBC 驱动程序的属性,不是供一般用户使用的
  • 向数据库发送 SQL 语句
    • Statement:用于发送基本 SQL 语句
    • PreparedStatement:用于发送准备好的语句或基本 SQL 语句(派生自 Statement
    • CallableStatement:用于调用数据库存储过程(派生自 PreparedStatement
    • Connection 接口:提供创建语句以及管理连接及其属性的方法
    • Savepoint:在事务中提供保存点
  • 获取和更新查询的结果
    • ResultSet 接口
  • SQL 类型到 Java 编程语言中的类和接口的标准映射关系
    • Array 接口:SQL ARRAY 的映射关系
    • Blob 接口:SQL BLOB 的映射关系
    • Clob 接口:SQL CLOB 的映射关系
    • Date 类:SQL DATE 的映射关系
    • NClob 接口:SQL NCLOB 的映射关系
    • Ref 接口:SQL REF 的映射关系
    • RowId 接口:SQL ROWID 的映射关系
    • Struct 接口:SQL STRUCT 的映射关系
    • SQLXML 接口:SQL XML 的映射关系
    • Time 类:SQL TIME 的映射关系
    • Timestamp 类:SQL TIMESTAMP 的映射关系
    • Types 类:提供用于 SQL 类型的常量
  • 自定义映射 SQL 用户定义类型 (UDT) 到 Java 编程语言中的类
    • SQLData 接口:指定 UDT 到此类的一个实例的映射关系
    • SQLInput 接口:提供用来从流中读取 UDT 属性的方法
    • SQLOutput 接口:提供用来将 UDT 属性写回流中的方法
  • 元数据
    • DatabaseMetaData 接口:提供有关数据库的信息
    • ResultSetMetaData 接口:提供有关 ResultSet 对象的列的信息
    • ParameterMetaData 接口:提供有关 PreparedStatement 命令的参数的信息
  • 异常
    • SQLException:由大多数方法在访问数据出问题时抛出,以及因为其他原因由其他一些方法抛出
    • SQLWarning:为了指示一个警告而抛出
    • DataTruncation:为了指示数据可能已经被截断而抛出
    • BatchUpdateException:为了指示并不是批量更新中的所有命令都成功执行而抛出

JDBC 4.0 API 中引入的 java.sqljavax.sql 特性

  • 自动 java.sql.Driver 发现:不再需要通过 Class.forName 来加载 java.sql.Driver
  • 添加了国家字符集 (National Character Set) 支持
  • 为 SQL:2003 XML 数据类型添加的支持
  • SQLException 增强:为原因链添加的支持;为公用 SQLState 类值代码添加新 SQLException
  • 增强的 Blob/Clob 功能:提供创建和释放 Blob/Clob 实例以及为了提高可访问性所添加的一些其他方法
  • 为访问 SQL ROWID 添加的支持
  • 添加的支持,允许 JDBC 应用程序访问已被供应商包装的 JDBC 资源实例,通常在一个应用程序服务器或连接池环境中。
  • 当与 PooledConnection 关联的 PreparedStatement 已关闭或驱动程序确定为无效时要通知的可用性

JDBC 3.0 API 中引入的 java.sqljavax.sql 特性

  • 入池语句 (pooled statement):重新使用与某个已入池的连接 (pooled connection) 相关的语句
  • 保存点:允许将事务回滚到某一指定保存点
  • ConnectionPoolDataSource 定义的属性:指定将连接入池的方法
  • PreparedStatement 对象的参数的元数据
  • 从自动生成的列中获取值的能力
  • 使从 CallableStatement 对象中返回的多个 ResultSet 对象同时打开的能力
  • 通过名称和索引标识 CallableStatement 对象的参数的能力
  • ResultSet 可保存性:指定是否应该让游标在某一事务结束时保持打开或关闭状态的能力
  • 获取和更新 Ref 对象引用的 SQL 结构化类型实例的能力
  • 通过编程方式更新 BLOBCLOBARRAYREF 值的能力。
  • java.sql.Types.DATALINK 数据类型的添加:允许 JDBC 驱动程序访问数据源以外的地方存储的对象
  • 用于获取 SQL 类型分层结构的元数据的添加

JDBC 2.1 Core API 中引入的 java.sql 特性

  • 可滚动的结果集:使用 ResultSet 接口中的新方法,这些方法允许将光标移动到某一特定行,或者移动到其当前位置的某一相对位置
  • 批量更新
  • 编程式更新:使用 ResultSet updater 方法
  • 新数据类型:映射 SQL3 数据类型的接口
  • 用户定义类型 (UDT) 的自定义映射关系
  • 其他特性,包括性能提示、字符流的使用、java.math.BigDecimal 值的完全精度、其他安全性,以及对日期、时间和时间戳值中的时区的支持。

JDBC 2.0 Package API 中引入的 javax.sql 特性

  • DataSource 接口被认为是建立连接的一种方式。Java Naming 和 Directory InterfaceTM (JNDI) 用于向命名服务注册一个 DataSource 对象和获取该对象。
  • 入池连接:允许使用和重新使用连接
  • 分布式事务:允许事务跨越不同的 DBMS 服务器
  • RowSet 技术:提供一个处理和传递数据的便捷方法

UDT 的自定义映射关系

可以将 SQL 中定义的用户定义类型 (UDT) 映射到 Java 编程语言中的类。SQL 结构化类型或 SQL DISTINCT 类型是可以自定义映射的 UDT。以下三个步骤设置了一个自定义映射关系:
  1. 在 SQL 中定义 SQL 结构化类型或 DISTINCT 类型
  2. 定义 Java 编程语言中的类,SQL UDT 将映射到该类。此类必须实现 SQLData 接口。
  3. Connection 对象的类型映射表中创建一个项,该项包含两项内容:
    • UDT 的完全限定 SQL 名称
    • 实现 SQLData 接口的类的 Class 对象

为 UDT 准备好这些之后,在该 UDT 上调用 ResultSet.getObjectCallableStatement.getObject 方法将自动获取该 UDT 的自定义映射关系。此外,PreparedStatement.setObject 方法会自动将该对象映射回其 SQL 类型,以便将它存储在数据源中。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值