⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdbc2.0.frame8.html

📁 JDBC入门中文文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:

<p><a name="297973"></a> </p>

<blockquote>
  <pre>Ref ref = rs.getRef(1);


</pre>
</blockquote>

<p><a name="297977"></a></p>

<p>从创建它的结果集的第一列检索 <code>Ref</code> 
值。缺省情况下,检索 <code>Ref</code> 值的操作并不会实现 <code>Ref</code> 
所引用的数据。同样,在缺省情况下,当<strong>会话</strong>或连接处于打开状态时,Ref 
值将保持有效状态。可以覆盖这些缺省值,但是 JDBC 2.0 API 
也没有规定具体的操作步骤。</p>

<p><a name="298124"></a><code>Ref </code>接口<strong>没有</strong>提供取消引用的方法。而是可以将 
<code>Ref</code> 作为输入参数传给适当的 SQL 
语句,再由该语句取回它所引用的对象。详细信息,参见单独的 JDBC 
API 文档。</p>

<p><a name="298008"></a> </p>

<h4>8.4.2 存储 ref</h4>

<p>可以调用 <code>PreparedStatement.setRef()</code> 方法来将 <code>Ref</code> 
作为输入参数传递到预先准备好的语句。</p>

<p><a name="298010"></a> </p>

<h4>8.4.3 元数据增加部分</h4>

<p>在 <code>java.sql.Types </code>中增加了新的类型代码,即 <code>REF</code>。当 
JDBC 支持<code>Ref</code> 数据类型时,由诸如 <code>DatabaseMetaData.getTypeInfo()</code> 
和 <code>DatabaseMetaData.getColumns() </code>的方法返回该值。</p>

<p><a name="297939"></a> </p>

<h3>8.5 Distinct 类型</h3>

<h4>8.5.1 检索 distinct 类型</h4>

<p>缺省情况下,通过调用 distinct 类型相应的基本类型的 <code>getXXX()</code> 
方法,可以检索 SQL 类型 DISTINCT 
的数据。例如,假设给出以下类型声明: </p>

<p><a name="298138"></a> </p>

<p><a name="298143"></a> CREATE TYPE MONEY AS NUMERIC(10,2) </p>

<p><a name="298144"></a> </p>

<p><a name="298145"></a>可以采用以下方法来检索 MONEY 类型的值: </p>

<p><a name="298148"></a> </p>

<blockquote>
  <pre>java.math.BigDecimal bd = rs.getBigDecimal(1);


</pre>
</blockquote>

<p><a name="298389"></a></p>

<p>这是因为 JDBC 已将基本 SQL NUMERIC 类型映射到 <code>java.math.BigDecimal</code> 
类型。</p>

<p><a name="298152"></a> </p>

<h4>8.5.2 保存 distinct 类型</h4>

<p>可以采用 SQL DISTINCT 类型相应的基本类型的 <code>PreparedStatement.setXXX()</code> 
方法来将该 distinct 
类型的输入参数传给预先准备好的语句。例如,如果给出以上的 MONEY 
类型的定义,则可以使用 <code>PreparedStatement.setBigDecimal() </code>。</p>

<p><a name="298161"></a> </p>

<h4>8.5.3 元数据增加部分</h4>

<p><code>java.sql.Types </code>中增加了新的类型代码,即 <code>DISTINCT</code>。当 
JDBC 支持这种数据类型时,由诸如 <code>DatabaseMetaData.getTypeInfo()</code> 
和 <code>DatabaseMetaData.getColumns() </code>的方法返回该值。</p>

<p><a name="298169"></a>在架构表定义中使用 SQL DISTINCT 
类型之前,必须将其类型定义为特定数据库架构的一部分。通过调用 
<code>DatabaseMetaData.getUDTs()</code> 
方法可以检索特定于架构的自定义类型(<code>DISTINCT </code>类型是其中的一种)的有关信息。例如, 
</p>

<p><a name="298170"></a> </p>

<blockquote>
  <pre><code>int[] types = {Types.DISTINCT};
ResultSet rs = dmd.getUDTs(&quot;catalog-name&quot;, &quot;schema-name&quot;,
	&quot;%&quot;, types);
</code></pre>
</blockquote>

<p><a name="298174"></a></p>

<p><a name="298175"></a>将返回在 <code>catalog- name.schema-name </code>架构中<strong>定义的</strong>所有 
SQL DISTINCT 类型的描述。如果驱动程序不支持 UDT 或者没有找到匹配的 
UDT,则返回空结果集。</p>

<p><a name="298176"></a>每种类型描述都有以下各列: </p>

<p><a name="298202"></a> </p>

<table Border="0">
  <tr>
    <td><strong>TYPE_CAT </strong></td>
    <td>String =&gt; 类型的目录(可以为空) </td>
  </tr>
  <tr>
    <td><strong>TYPE_SCHEM </strong></td>
    <td>String =&gt; 类型的架构(可以为空) </td>
  </tr>
  <tr>
    <td><strong>TYPE_NAME </strong></td>
    <td>String =&gt; 数据库类型名称 </td>
  </tr>
  <tr>
    <td>JAVA_CLASS </td>
    <td>String =&gt; Java 类或接口名称 </td>
  </tr>
  <tr>
    <td><strong>DATA_TYPE </strong></td>
    <td>short =&gt; <code>java.sql.Types</code> 中所定义的值,例如 DISTINCT </td>
  </tr>
  <tr>
    <td><strong>REMARKS </strong></td>
    <td>String =&gt; 对类型的解释性注释 </td>
  </tr>
</table>

<table>
  <tr>
    <td></td>
  </tr>
</table>

<p><a name="298204"></a> </p>

<p>以上的大多数列应该是无需加以解释的。上例中, <strong>TYPE_NAME</strong> 
是赋予 DISTINCT 类型 (MONEY) 的 SQL 类型名。CREATE TABLE 
语句指定这种类型的列时也使用该名称。</p>

<p><a name="298248"></a>当 <strong>DATA_TYPE</strong> 是 <code>Types.DISTINCT</code> 
时,<strong>JAVA_CLASS </strong>列就包含全限定的 Java 类名。如果在这种 
DISTINCT 类型的列上调用 <code>getObject()</code>,则将创建本类的实例。例如,在以上的 
MONEY 情况下,JAVA_CLASS 将采用缺省设置 <code>java.math.BigDecimal</code>。JDBC 
2.0 API 并不禁止驱动程序返回名为 JAVA_CLASS 的类的子类型。当使用 
JAVA_CLASS 时, JAVA_CLASS 的值反映自定义类型映射。详细信息,参见第 <a
href="jdbc2.0.frame9.html#298134">9</a> 章。</p>

<p><a name="298166"></a> </p>

<h3>8.6 构化类型</h3>

<h4>8.6.1 检索结构化类型</h4>

<p>调用方法 <code>getObject()</code> 总能检索 SQL 
结构化类型的数值。缺省情况下,<code>getObject()</code> 
为结构化类型返回 <code>Struct</code> 类型的值。例如, </p>

<p><a name="298282"></a> </p>

<blockquote>
  <pre>Struct struct = (Struct)rs.getObject(1);
</pre>
</blockquote>

<p><a name="298284"></a></p>

<p><a name="298285"></a>从结果集 <code>rs</code> 的当前行的第一列检索 <code>Struct</code> 
值。<code>Struct</code> 接口所含的方法可以将结构化类型的属性当作 <code>java.lang.Object 
</code>值的数组来检索。缺省情况下,JDBC 驱动程序在将指向 <code>Struct</code> 
的引用返回给应用程序之前,应该先实现 <code>Struct</code> 
的内容。同样,缺省情况下只要 Java 应用程序保留了指向 <code>Struct</code> 
对象的引用,就认为 <code>Struct</code> 对象是有效的。JDBC 
驱动程序可能会允许改变这些缺省值 — 例如,允许使用 SQL LOCATOR — 
但是 JDBC 2.0 API 并没有规定具体的操作步骤。</p>

<p><a name="298302"></a> </p>

<h4>8.6.2 存储结构化类型</h4>

<p>可以调用 <code>PreparedStatement.setObject()</code> 方法来将 <code>Struct</code> 
作为输入参数传递给预先准备好的语句。</p>

<p><a name="298162"></a> </p>

<h4>8.6.3 元数据增加部分</h4>
<code>

<p>java.sql.Types</code> 中增加了一种新的类型代码,即 <code>STRUCT</code>。当 
JDBC 驱动程序支持结构化数据类型时,将通过诸如 <code>DatabaseMetaData.getTypeInfo()</code> 
和 <code>DatabaseMetaData.getColumns() </code>的方法返回该值。</p>

<p><a name="298308"></a>在架构表定义中使用结构化的 SQL 
类型之前,必须将结构化的 SQL 
类型定义为特定数据库架构的一部分。通过调用 <code>DatabaseMetaData.getUDTs()</code> 
方法可以检索特定于架构的自定义类型(<code>STRUCT </code>类型是其中的一种)的有关信息。例如, 
</p>

<p><a name="298309"></a> </p>

<blockquote>
  <pre><code>int[] types = {Types.STRUCT};
ResultSet rs = dmd.getUDTs(&quot;catalog-name&quot;, &quot;schema-name&quot;,
	&quot;%&quot;, types);
</code></pre>
</blockquote>

<p><a name="298313"></a></p>

<p><a name="298314"></a>返回在 <code>catalog- name.schema-name </code>架构中<strong>定义的</strong>所有结构化 
SQL 类型的描述。如果驱动程序不支持 UDT 或者找不到匹配的 UDT,则返回空结果集。有关 
<code>getUDTs()</code> 所返回结果集的描述,参见 <a
href="jdbc2.0.frame8.html#298161">8.5.3</a> 一节。</p>

<p><a name="298344"></a>当 <code>getUDTs()</code> 所返回的 <strong>DATA_TYPE</strong> 
是 <code>Types.STRUCT</code> 时,<strong>JAVA_CLASS </strong>列就包含 Java 
类的全限定的 Java 类名。在这种 STRUCT 类型的列上调用 <code>getObject()</code> 
时,由 JDBC 驱动程序生成该类的实例。这样,<strong>JAVA_CLASS</strong> 
对于结构化类型会采用缺省设置 <code>java.sql.Struct </code>。第 <a
href="jdbc2.0.frame9.html#298134">9</a> 章讨论 Java 
应用程序如何修改这个缺省值。在这里我们只指出一点:JDBC 2.0 API 
不禁止驱动程序返回名为 JAVA_CLASS 的类的子类型。</p>

<p><br>
</p>

<hr>
<font size="-1"><a href="jdbc2.0.frame.html">

<p>目录</a> | <a href="jdbc2.0.frame7.html">上一页</a> | <a
href="jdbc2.0.frame9.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>版权所有 &copy; 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 + -