目录 | 上一页 | 下一页 | JDBCTM 指南:入门 |
本节列出了一些对 JDBC 2.0 增加部分的建议,而我们没有将其添加到 JDBC API 中。列出这些建议,只是记录 JDBC 2.0 中没有采纳的部分方案。我们欢迎对以下列出的有关项提出意见。
处理结果 — 增加一种方法在插入操作之后确定自动递增的键值。
增强元数据 — 为预先准备好的语句参数和预先准备好的语句结果集增加元数据。JDBC 没有提供描述预先准备好的语句的元数据;也没有提供在不执行语句(相当于 SQL92 DESCRIBE OUTPUT 和 ODBC SQLDescribeParam)时描述其结果的元数据。
安全性 — 允许应用程序选择基本传输属性(例如 SSL)。提供 SSL 套接字实现。JDBC 应用程序必须能够为保护线协议(例如加密)的安全选择驱动程序支持的机制。对于 SSL,一种选择是允许应用程序指定特殊的密码算法集(密钥交换算法、大批量加密、MAC [消息鉴定算法])
安全鉴定 — 允许 JDBC 应用程序为执行鉴定选择驱动程序支持的机制。应该支持以下机制:用户名、密码;Kerberos 令牌;数字证书。
命令完成(Command Complete)事件 — 支持一种用户提供的事件对象,它在某命令(包括当前命令和常规命令,同步或异步命令)完成时即启动。- - 各种事件:Connect 事件;Disconnect 事件;Before Connect 事件
参数管理 — 支持: Append、GetCount、GetItem(按名称/位置)、Delete 和 Refresh。
混和式 SQL/Java 集成 — 提供了定义 Java ADT 的机制,同时提供混和式 SQL/Java 查询机制,可以查询列为 SQL 基本单元或 Java 类的表。
专业数据类型 — 提供对 OLAP、Spatial、TimeSeries 及其它专业数据类型的扩展。
Java ADT — 引入专门针对 Java Classes/Java Beans 的 SQL 概念,它所引入的 SQL3 概念对于在数据库和商务应用程序环境中处理 Java 对象很有用。例如,让数据库系统知晓某种类中的哪些方法定义可以用于在对象上执行操作(例如比较等)就很有用。一种方法就是引入“通用”方法名称。除数据库外,常规商务应用程序也可以使用这些方法名。
增加 JDBC 兼容性 *等级*,这与单独进行 API 调用以查看驱动程序是否支持某个特性相反。
增加一种 API 调用,用来描述驱动程序所理解的 URL 格式。
Statement
接口上的每个新属性(例如结果集类型、并发类型等)提供单独方法的替代途径。我们可以引入一种新类
ResultSetProperties
,它本身就包含了获取及设置这些属性的所有方法。这样
Statement 就只包含了两个获取和设置 ResultSetProperties
属性的方法。这种途径有助于简化 Statement
接口。CursorStatement
prepareUpdate() throws SQLException
方法;或者在现有 ResultSet
接口中增加 prepareUpdate
方法,同时定义:如果没有光标与该方法相关联,该方法即可能失败。增加新的
CursorStatement
接口,它扩展 PreparedStatement
并增加新的方法 void update() throws SQLException
和 void
delete() throws SQLException
。引入另外一种中间 CursorResultSet
(在继承层次结构中位于
ResultSet
和 ScrollableResultSet
之间)也会很有帮助。引入 CursorStatement
的动机是避开解析每个查询来查找光标操作的必要性。让
CursorStatement 来扩展 PreparedStatement 的原因则是为了获得对 setXXX
方法的访问。可以使用 setXXX() 方法来向 CursorResultSet
中的当前行的相应各列提供新值。executeUpdate()
方法可以执行实际的更新(利用已设置的参数值)或删除(忽略参数值)。execute()
和 executeQuery() 方法将被覆盖,以便它们总能抛出 SQLException。另外,把
CursorStatement 绑到创建它的 CursorResultSet 上,这样无论何时对
CursorResultSet
进行重新定位(下一个,相对位置,绝对位置,第一个,最后一个,等等),CursorStatement
都将自动进行跟踪且更新/删除方法能够作用于正确的行。**
我们打算废除 CursorStatement 而只是将该功能添加到 CursorResultSet
中,这是因为通常这些事项具有一一对应关系。Statement
接口上增加 void
setCursorProperties(CursorProperties props) throws SQLException
; 定义新的java.sql.CursorProperties
类。增加语句属性的想法比较诱人:当执行语句时,就会返回 ResultSet
的适当子类。但是,我们并不推荐为所有这些属性在 Statement
中增加一堆独立的存取器/变化器,而是推荐定义一种具有公共成员的
CursorProperties
类,然后在 Statement
中仅增加一种新方法: void setCursorProperties(CursorProperties props)
throws SQLException
;这样就可以消除新 Statement.setFetchSize
和 getFetchSize
方法的必要性。CursorProperties
可具有公有的构造函数,该函数返回带有详细定义的缺省值 (TBD) 的CursorProperties
对象。该类的成员可包括: 0. boolean useCursors —
如果为真,则该语句从 executeQuery 返回 CursorResultSet
。1.
String cursorName — 不鼓励使用 Statement.setCursorName()
。2. boolean
scrollable — 如果为真,则该语句从 executeQuery 返回 ScrollableResultSet
。3.
boolean readonly — 如果为真,则该光标为 READONLY(只读的)。4. int
rowCacheSize — 提示驱动程序一次从数据库检索多少行。5. boolean
closeOnEndTransaction — 在 ANSI SQL '92 中,光标是在 commit/rollback
时自动关闭的,但是许多数据库都允许光标保持打开状态以提高效率。6.
String[] updatableColumns — 在 SQL '92 语法中表示在“FOR UPDATE OF <column
list>”子句中的列的清单。7. boolean sensitive —
如果为真,则在应用程序滚动这些行时可以看见对基本表所作的改变(光标打开状态时发生的)。
目录
| 上一页 | 下一页版权所有 © 1996, 1997 Sun Microsystems, Inc. 保留所有权利
。