📄 jdbc2.0.frame13.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=gb2312">
<title></title>
</head>
<body bgcolor="#ffffff">
<table width="100%">
<tr>
<td><font size="-1"><a href="jdbc2.0.frame.html">目录</a> | <a
href="jdbc2.0.frame12.html">上一页</a> | <a href="jdbc2.0.frame14.html">下一页</a> </font></td>
<td align="right"><i>JDBC<sup><font size="-2">TM</font></sup> 指南:入门</i></td>
</tr>
</table>
<hr>
<p><br>
<a name="284927"></a> </p>
<h2>附录 B:附加的建议 </h2>
<p>本节列出了一些对 JDBC 2.0 增加部分的建议,而我们<strong>没有</strong>将其添加到
JDBC API 中。列出这些建议,只是记录 JDBC 2.0
中没有采纳的部分方案。我们欢迎对以下列出的有关项提出意见。</p>
<p><a name="281852"></a> </p>
<h2>B.1 v0.1 的其它建议</h2>
<p>处理结果 — 增加一种方法在插入操作之后确定自动递增的键值。</p>
<p><a name="282325"></a>增强元数据 —
为预先准备好的语句参数和预先准备好的语句结果集增加元数据。JDBC
没有提供描述预先准备好的语句的元数据;也没有提供在不执行语句(相当于
SQL92 DESCRIBE OUTPUT 和 ODBC SQLDescribeParam)时描述其结果的元数据。</p>
<p><a name="281853"></a>新的数据类型 — 增加 SQL 时间间隔数据类型 </p>
<p><a name="281857"></a>安全性 — 允许应用程序选择基本传输属性(例如
SSL)。提供 SSL 套接字实现。JDBC
应用程序必须能够为保护线协议(例如加密)的安全选择驱动程序支持的机制。对于
SSL,一种选择是允许应用程序指定特殊的密码算法集(密钥交换算法、大批量加密、MAC
[消息鉴定算法]) </p>
<p><a name="281859"></a>安全鉴定 — 允许 JDBC
应用程序为执行鉴定选择驱动程序支持的机制。应该支持以下机制:用户名、密码;Kerberos
令牌;数字证书。</p>
<p><a name="281862"></a>命令完成(Command Complete)事件 —
支持一种用户提供的事件对象,它在某命令(包括当前命令和常规命令,同步或异步命令)完成时即启动。-
- 各种事件:Connect 事件;Disconnect 事件;Before Connect 事件 </p>
<p><a name="281863"></a>光标实现位置 — 支持客户机端对服务器端。</p>
<p><a name="281865"></a>参数管理 — 支持: Append、GetCount、GetItem(按名称/位置)、Delete
和 Refresh。</p>
<p><a name="281872"></a>混和式 SQL/Java 集成 — 提供了定义 Java ADT
的机制,同时提供混和式 SQL/Java 查询机制,可以查询列为 SQL
基本单元或 Java 类的表。</p>
<p><a name="281873"></a>专业数据类型 — 提供对 OLAP、Spatial、TimeSeries
及其它专业数据类型的扩展。</p>
<p><a name="281874"></a>序列化数据、时间、时间戳 —
允许这些类型被序列化。</p>
<p><a name="281875"></a>异步请求 —
允许调用程序请求异步地执行某语句。</p>
<p><a name="281876"></a>Java ADT — 引入专门针对 Java Classes/Java Beans 的 SQL
概念,它所引入的 SQL3 概念对于在数据库和商务应用程序环境中处理
Java
对象很有用。例如,让数据库系统知晓某种类中的哪些方法定义可以用于在对象上执行操作(例如比较等)就很有用。一种方法就是引入“通用”方法名称。除数据库外,常规商务应用程序也可以使用这些方法名。</p>
<p><a name="281877"></a>增加对 SQL PSM 的支持。</p>
<p><a name="281878"></a>增加附加的 SQL 语言功能,例如各种形式的连接。</p>
<p><a name="281879"></a>增加 JDBC 兼容性 *等级*,这与单独进行 API
调用以查看驱动程序是否支持某个特性相反。</p>
<p><a name="281880"></a>增加一种 API 调用,用来描述驱动程序所理解的 URL
格式。</p>
<p><a name="281881"></a>增加一种行对象,以本地格式封装数据库数据。</p>
<p><a name="282201"></a>增加日期、时间、时间戳的不变性。</p>
<p><a name="281850"></a> </p>
<h2>B.2 v0.7 的附加建议</h2>
<ul>
<p><a name="288240"></a></p>
<li>有人建议采用一种为 <code>Statement</code>
接口上的每个新属性(例如结果集类型、并发类型等)提供单独方法的替代途径。我们可以引入一种新类
<code>ResultSetProperties</code>,它本身就包含了获取及设置这些属性的所有方法。这样
Statement 就只包含了两个获取和设置 <code>ResultSetProperties</code>
属性的方法。这种途径有助于简化 <code>Statement</code> 接口。<br>
<br>
<a name="293573"></a> </li>
<li>增加新的 CursorResultSet 接口,它扩展 ResultSet 并增加 <code>CursorStatement
prepareUpdate() throws SQLException</code> 方法;或者在现有 <code>ResultSet</code>
接口中增加 <code>prepareUpdate</code>
方法,同时定义:如果没有光标与该方法相关联,该方法即可能失败。增加新的
<code>CursorStatement</code> 接口,它扩展 <code>PreparedStatement</code>
并增加新的方法<code> void update() throws SQLException </code>和 <code>void
delete() throws SQLException</code>。引入另外一种中间<code> CursorResultSet</code>(在继承层次结构中位于
<code>ResultSet</code> 和 <code>ScrollableResultSet</code>
之间)也会很有帮助。引入 CursorStatement
的动机是避开解析每个查询来查找光标操作的必要性。让
CursorStatement 来扩展 PreparedStatement 的原因则是为了获得对 setXXX
方法的访问。可以使用 setXXX() 方法来向 CursorResultSet
中的当前行的相应各列提供新值。executeUpdate()
方法可以执行实际的更新(利用已设置的参数值)或删除(忽略参数值)。execute()
和 executeQuery() 方法将被覆盖,以便它们总能抛出 SQLException。另外,把
CursorStatement 绑到创建它的 CursorResultSet 上,这样无论何时对
CursorResultSet
进行重新定位(下一个,相对位置,绝对位置,第一个,最后一个,等等),CursorStatement
都将自动进行跟踪且更新/删除方法能够作用于正确的行。**
我们打算废除 CursorStatement 而只是将该功能添加到 CursorResultSet
中,这是因为通常这些事项具有一一对应关系。<br>
<br>
<a name="293575"></a> </li>
<li>在 <code>Statement</code> 接口上增加 <code>void
setCursorProperties(CursorProperties props) throws SQLException</code>; 定义新的<code>java.sql.CursorProperties</code>
类。增加语句属性的想法比较诱人:当执行语句时,就会返回 <code>ResultSet</code>
的适当子类。但是,我们并不推荐为所有这些属性在 <code>Statement</code>
中增加一堆独立的存取器/变化器,而是推荐定义一种具有公共成员的
<code>CursorProperties</code> 类,然后在 <code>Statement</code>
中仅增加一种新方法: <code>void setCursorProperties(CursorProperties props)
throws SQLException</code>;这样就可以消除新 <code>Statement.setFetchSize</code>
和 <code>getFetchSize</code> 方法的必要性。<code>CursorProperties</code>
可具有公有的构造函数,该函数返回带有详细定义的缺省值 (TBD) 的<code>CursorProperties</code>
对象。该类的成员可包括: 0. boolean useCursors —
如果为真,则该语句从 executeQuery 返回 <code>CursorResultSet</code>。1.
String cursorName — 不鼓励使用 <code>Statement.setCursorName()</code>。2. boolean
scrollable — 如果为真,则该语句从 executeQuery 返回 <code>ScrollableResultSet</code>。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 —
如果为真,则在应用程序滚动这些行时可以看见对基本表所作的改变(光标打开状态时发生的)。<br>
<br>
<a name="293570"></a> </li>
<li>可以将任何 SQL
查询的结果看作是定义简单的结构化类型。结构化类型的各个域对应于查询结果的各列,而查询所返回的结果集中的每行则代表该类型的实例。JDBC
可以允许从 SQL 查询所隐式定义的类型映射到 Java
类,或者甚至在常规关系表和 Java 类之间进行双向映射。<br>
<br>
</li>
</ul>
<p><br>
</p>
<hr>
<font size="-1"><a href="jdbc2.0.frame.html">
<p>目录</a> | <a href="jdbc2.0.frame12.html">上一页</a> | <a
href="jdbc2.0.frame14.html">下一页</a> </font></p>
<hr>
<address>
<a href="mailto:jdbc@eng.sun.com">jdbc@eng.sun.com</a> 或 <a
href="mailto:jdbc-business@eng.sun.com">jdbc-business@eng.sun.com</a>
</address>
<a href="../../../relnotes/SMICopyright.html"><font size="-1"><i>
<p>版权所有 © 1996, 1997 Sun Microsystems, Inc. 保留所有权利</i></font>。</a><!-- HTML generated by Suzette Pelouch on June 09, 1998 -->
</p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -