?? jdbc2.0.frame8.html
字號:
<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("catalog-name", "schema-name",
"%", 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 => 類型的目錄(可以為空) </td>
</tr>
<tr>
<td><strong>TYPE_SCHEM </strong></td>
<td>String => 類型的架構(可以為空) </td>
</tr>
<tr>
<td><strong>TYPE_NAME </strong></td>
<td>String => 數據庫類型名稱 </td>
</tr>
<tr>
<td>JAVA_CLASS </td>
<td>String => Java 類或接口名稱 </td>
</tr>
<tr>
<td><strong>DATA_TYPE </strong></td>
<td>short => <code>java.sql.Types</code> 中所定義的值,例如 DISTINCT </td>
</tr>
<tr>
<td><strong>REMARKS </strong></td>
<td>String => 對類型的解釋性注釋 </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("catalog-name", "schema-name",
"%", 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>版權所有 © 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 + -