📄 jdbc-spec.frame2.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="607">
<tr>
<td width="294"><font size="-1"><a href="jdbc-spec.frame.html">目录</a> | <a
href="jdbc-spec.frame1.html">上一页</a> | <a href="jdbc-spec.frame3.html">下一页</a>
</font></td>
<td align="right" width="305"><i>JDBC<sup><font size="-2">TM</font></sup> 指南:入门</i></td>
</tr>
</table>
<hr>
<p><br>
<a name="5442"></a> </p>
<h2>2 目标和原则</h2>
<p>本节概述 API 设计的主要目标及原则。<a name="5445"></a> </p>
<h3>2.1 SQL 层 API</h3>
<p>对于 Java,JDBC 与“调用级”的 SQL
接口类似。这意味着它的重点在于执行未经处理的 SQL
语句和取回结果。我们也希望将来定义更高级别的 API,它们将可能在这些基本级别的基础上实现。更高层次
API 的示例包括 Java
类的直接透明映射表、更通用查询的语义树表示及 Java 的嵌入 SQL
语法。 </p>
<p><a name="5447"></a>我们希望不同的应用程序开发商工具会发布使用我们的
API 的代码。但目前我们希望程序员使用该 API,尤其因为现在的 Java
无其它解决方案可用。 </p>
<p><a name="11218"></a> </p>
<h3>2.2 SQL 一致性</h3>
<p>数据库系统支持多种 SQL
语法和语义,且这些语法和语义在更高级功能(例如外部连接和存储过程)上彼此并不一致。希望随着时间的推移,真正标准的
SQL
部分将不断扩展,从而可包括更多的功能。在此期间,我们采取如下策略:
<ul>
<p><a name="11244"></a></p>
<li>JDBC 允许将任何查询字符串传给基本 DBMS
驱动程序,因此如果应用程序使用尽可能多的 SQL
功能,就可能在某些 DBMS
上发生接收错误。事实上,应用程序查询甚至无需是 SQL
或专门为特定 DBMS 而设计的派生 SQL(例如文档或图像查询 SQL)。<br>
<br>
<a name="11251"></a> </li>
<li>为通过 JDBC 一致性测试并被称为“JDBC COMPLIANT(TM)”,我们要求驱动程序至少支持
ANSI SQL92
入门级。这样即可确保需要广泛移植性的应用程序具有最低程度的共性。我们相信
ANSI SQL-2 入门级功能是相当强大的,而且目前已受到广泛支持。<br>
<br>
</li>
</ul>
<p><a name="5448"></a></p>
<h3>2.3 JDBC 必须能在公用数据库接口上执行</h3>
<p>我们需要确保 JDBC SQL API 能在公用 SQL 层 API(特别是 ODBC)上实现。这样的要求改变了规范的某些部分,特别是
OUT 参数和大块的处理。 </p>
<p><a name="8219"></a> </p>
<h3>2.4 提供与 Java 系统其它部分一致的 Java 接口</h3>
<p>外界给予 Java
强烈而积极的响应。在很大程度上,这要归因于人们认为它的语言和标准运行环境不仅结构简单,而且功能强大一致。
</p>
<p><a name="8247"></a>我们将尽可能提供 Java
数据库接口以构建和强化已有核心 Java 类的风格和功效。 </p>
<p><a name="5450"></a> </p>
<h3>2.5 保持结构简单</h3>
<p>至少在开始时,我们会尽可能保持基本 API
的简单性。通常,我们会尽量提供单一机制来执行某一特定任务,而避免使用双重机制。如果漏掉某个重要功能,我们以后将以扩展
API 的方式予以补偿。 </p>
<p><a name="5452"></a> </p>
<h3>2.6 尽可能使用强大的静态类型</h3>
<p>我们希望能对 JDBC API
进行细分,从而获得更多的静态表达的类型信息。编译期间,这可以进行更细致的错误检查。
</p>
<p><a name="5455"></a>因为在本质上 SQL
是被动态分类的,所以在运行时可能会遇到类型不匹配错误,例如程序员希望
SELECT 返回整型值而数据库却返回字符串“foo”。但是,我们仍将允许程序员在编译期间指示类型期望值,以便进行尽可能多的静态检查。必要时我们也将支持动态分类的接口(参见第
<a href="jdbc-spec.frame14.html#50686">14</a> 章)。 </p>
<p><a name="5456"></a> </p>
<h3>2.7 保持常见条件的简单性</h3>
<p>应确保常见条件的简单性及非常见条件的可行性。 </p>
<p><a name="16118"></a>常见条件就是指程序员执行的简单无参 SQL
语句(如 SELECT、INSERT、UPDATE 或 DELETE),然后(在 SELECT
语句内)处理简单结果类型行。带 IN 参数的 SQL
语句就是一种常见条件。 </p>
<p><a name="16213"></a>稍缺共同性但仍较为重要的条件是:程序员用 INOUT
或 OUT 参数调用 SQL
语句。我们需要支持可读取或写入数兆字节对象的 SQL 语句及由 SQL
语句返回的缺乏共同性的条件(例如多重结果集)。 </p>
<p>我们希望能减少元数据的访问(例如,查看结果集类型或枚举数据库中的过程),且主要应由高级程序员或构造器工具使用。因此,规范的末尾记录了元数据函数及动态类型数据访问;程序员一般可跳过该部分。
</p>
<p><a name="16214"></a> </p>
<h3>2.8 使用多重方法表达多重功能</h3>
<p>接口设计的风格之一就是使用较少的过程,而同时又提供大量的控制标记作为这些过程的参数,以便影响各种行为。<em>
</em></p>
<p><a name="5466"></a>总的来说,Java
核心类的原则用不同的方法表达不同的功能。这可能会导致方法数量的剧增,但也会使方法更易于理解。这种方法的主要优势在于:学习使用基本接口的程序员不会因必须指定复杂行为的相关参数而困扰。
</p>
<p><a name="5467"></a>对于 JDBC
接口,我们尽可能采用相同的方案。一般而言,我们倾向于使用多重方法,而非通过标记参数使用多用途的方法。
</p>
<p><br>
</p>
<hr>
<font size="-1"><a href="jdbc-spec.frame.html">
<p>目录</a> | <a href="jdbc-spec.frame1.html">上一页</a> | <a
href="jdbc-spec.frame3.html">下一页</a> </font></p>
<hr>
<address>
<a href="mailto:jdbc@wombat.eng.sun.com">jdbc@wombat.eng.sun.com</a> 或 <a
href="mailto:jdbc-odbc@wombat.eng.sun.com">jdbc-odbc@wombat.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 April 10, 1998 -->
</p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -