亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jdbc2.0.frame7.html

?? JDBC入門中文文檔
?? 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.frame6.html">上一頁</a> | <a href="jdbc2.0.frame8.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="285951"></a> </p>

<h2>7 對 Java 對象的持久性</h2>

<p>JDBC 1.0 API 提供了一些對存儲 Java 對象和經由 <code>getObject()</code> 和 
<code>setObject()</code> 機制從數據庫檢索 Java 對象的支持。JDBC 2.0 API 
通過提供新型的元數據功能(可以使用元數據功能來檢索對數據源所含 
Java 對象的描述)從總體上增強了 JDBC 驅動程序實現 Java 
對象持久性的能力。Java 類的實例可以作為可序列化的 Java 
對象(或其它某種特定于廠商的格式)存儲在數據庫中。如果采用了對象序列化,則可以根據 
Java 對象序列化所指定的規則處理對象之間的引用。</p>

<p><a name="297434"></a>本章所述的 JDBC 2.0 API 功能可支持新一代的能感知 
Java 的數據庫管理系統,稱為 <em>Java 關系式 DBMS</em>。Java 關系式 DBMS 
用 Java 
對象類型擴展了數據庫的類型系統,同時允許用戶編寫引用這些類型的查詢。現在有幾家數據庫廠商正在創建具有 
Java 
關系式能力的產品。本章所述的各種機制是可選的。不支持本章所述功能的 
JDBC 驅動程序不需要實現這些功能。</p>

<p><a name="293109"></a>讓我們先看看典型的 Java 應用程序如何利用 JDBC API 
來存儲和檢索 Java 對象。</p>

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

<h3>7.1 檢索 Java 對象</h3>

<p>下例顯示了利用 JDBC 如何檢索對象。示例查詢引用了 <code>PERSONNEL</code> 
表,而表中包含了稱為 <code>Employee</code> 的列,列中包含 Java 類 <code>Employee</code> 
的實例。此處,列名 <code>Employee</code> 和 Java 
類名相同,但是這并非是 JDBC 所要求的。事實上,由于目前引用 Java 
類型的 SQL 查詢沒有公認的標準語法,所以 JDBC 
并沒有要求必須使用任何特定的查詢語法。</p>

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

<blockquote>
  <pre>ResultSet rs = stmt.executeQuery(
	&quot;SELECT Employee FROM PERSONNEL&quot;);
rs.next();
Employee emp = (Employee)rs.getObject(1);

</pre>
</blockquote>

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

<p><a name="292884"></a>本例從 <code>PERSONNEL</code> 表中選擇了所有的 <code>Employee</code> 
實例。調用 <code>ResultSet.next() </code>方法將結果集定位到包含 <code>Employee</code> 
的第一行。然后,示例應用程序通過調用 <code>ResultSet.getObject()</code> 
獲得 <code>Employee</code> 實例。這將導致 JDBC 
驅動程序(或許是通過恢復序列化的對象實例)構造 <code>Employee</code> 
類的實例,然后將實例作為 <code>java.lang.Object</code> 
返回,而應用程序將其限定為 <code>Employee</code>。</p>

<p><a name="293026"></a>請注意:上例中沒有包含對 JDBC 1.0 API 
的增加部分,而只是可能需要一些 JDBC 未規定的擴展的 SQL 
查詢語法格式。另外,我們注意到以上所示的 JDBC 
代碼還可用來檢索映射成 Java 類的 SQL 
自定義類型的數據。稍后一章中我們將詳細討論這一點。</p>

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

<h3>7.2 存儲 Java 對象</h3>

<p>下例說明了利用 JDBC 更新 Java 
對象及使得對象的更新副本能持久的過程。</p>

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

<blockquote>
  <pre>emp.setSalary(emp.getSalary() * 1.5);
PreparedStatement pstmt = con.preparedStatement(
&quot;UPDATE PERSONNEL SET Employee = ? WHERE Employee.no = 1001&quot;);
pstmt.setObject(1, emp);
pstmt.executeUpdate();


</pre>
</blockquote>

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

<p>下例給某雇員的工資上漲了 50% 。它首先調用 <code>Employee.setSalary()</code> 
方法來更新該雇員的工資額。請注意:JDBC 并沒有規定 <code>Employee</code> 
類上的方法的語義。此處,我們假定 <code>Employee</code> 類是一般的 
Java 類,因此調用 <code>Employee.setSalary() </code>只是改變 <code>Employee</code> 
實例中某些私有數據域的值。例如,調用 <code>Employee.setSalary()</code> 
并不會更新數據庫,盡管另外一種替代實現可以做到這一點,實際上也就使數據庫更新對于使用 
<code>Employee</code> 類的應用程序成為“透明的”。</p>

<p><a name="293065"></a>接著,它將利用擴展的 SQL UPDATE 
命令(本例中所用的查詢語法也不是 JDBC 必需的)來創建 <code>PreparedStatement</code> 
對象。UPDATE 命令表示要改變 <code>PERSONNEL</code> 表中指定行的 <code>Employee</code> 
列。<code>PreparedStatement.setObject()</code> 的作用是將 <code>Employee</code> 
對象傳遞給預先準備好的語句,而 <code>executeUpdate()</code> 
方法更新存儲在數據庫中的 <code>Employee</code> 值。</p>

<p><a name="288788"></a>請再次注意:上例并沒有涉及 JDBC 1.0 API 
沒有的語法增加部分。另外,如果要將 Employee 類映射到 SQL 
自定義類型,仍可以使用與此相同的 JDBC 代碼。</p>

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

<h3>7.3 附加元數據 </h3>

<p>JDBC 2.0 API 
包含了一種新型的元數據支持,可以使應用程序獲得對存儲在數據源中的 
Java 對象的完整描述。</p>

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

<h4>7.3.1 標識 Java 對象</h4>

<p>在 <code>java.sql.Types </code>中新增了一種類型代碼 <code>JAVA_OBJECT</code>,可用來表示 
Java 對象類型。<code>JAVA_OBJECT</code> 類型代碼是由諸如 <code>DatabaseMetaData.getTypeInfo() 
</code>和 <code>DatabaseMetaData.getColumns()</code> 的方法返回的。例如,如果 
DBMS 支持是 Java 類的類型,則 <code>DatabaseMetaData.getTypeInfo()</code> 
將返回包含有以下項的結果集: </p>

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

<ul>
  <li><a name="297536"></a><strong>TYPE_NAME</strong> String =&gt; 
    特定于數據源的名稱(可以為空) <a name="297537"></a></li>
  <li><strong>DATA_TYPE</strong> short =&gt; java.sql.Types.JAVA_OBJECT</li>
  <li>等等<a name="297539"></a> </li>
</ul>

<p>TYPE_NAME 列包含了 Java 對象的數據源特定的術語,例如“JavaObject”、“Serialized(序列化的)”等等。TYPE_NAME 
可以為空。</p>

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

<h4>7.3.2 特定于檢索架構的 Java 類型描述</h4>

<p>在用 Java 類來定義架構的表之前,通常用特定的數據庫架構來注冊 
Java 類。可以通過調用 <code>DatabaseMetaData.getUDTs()</code> 
方法來檢索有關特定于架構的自定義類型(<code>JAVA_OBJECT</code> 
類型是其中的一種)的信息。例如, </p>

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

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

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

<p><a name="297558"></a>將返回在 <code>catalog-name.schema- name </code>架構中<strong>定義的</strong>所有 
Java 對象的描述。如果驅動程序不支持 UDT 或沒有找到匹配的 UDT,則返回空結果集。</p>

<p><a name="297711"></a>每種類型描述都有以下幾列: </p>

<p><a name="297584"></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><strong>JAVA_CLASS </strong></td>
    <td>String =&gt; Java 類名稱 </td>
  </tr>
  <tr>
    <td><strong>DATA_TYPE </strong></td>
    <td>short =&gt;在 <code>java.sql.Types</code> 中定義的數值,例如 JAVA_OBJECT </td>
  </tr>
  <tr>
    <td><strong>REMARKS </strong></td>
    <td>String =&gt; 類型的說明性注釋 </td>
  </tr>
</table>

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

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

<p><a name="297585"></a><strong>TYPE_CAT</strong>、<strong>TYPE_SCHEM</strong>、<strong>DATA_TYPE</strong> 
和 <strong>REMARKS</strong> 各列應該是無需加以解釋的。<strong>TYPE_NAME</strong> 
實際上就是 SQL 類型名稱。在 CREATE TABLE 
語句中就使用該名稱來指定這種類型的列。</p>

<p><a name="297586"></a>當 <strong>DATA_TYPE</strong> 是<code>JAVA_OBJECT</code> 
時,則 <strong>JAVA_CLASS </strong>就是與 <strong>TYPE_NAME</strong> 相關聯的 
Java 類的全限定的 Java 類名。實際上存儲在 <strong>TYPE_NAME</strong> 
列中的所有值必須是該類或其子類的實例。當通過使用 JDBC 
的應用程序從 <strong>TYPE_NAME</strong> 列中取出數值時,將由 JDBC 
驅動程序實現該類或子類的實例。</p>

<p><a name="300789"></a><code>DatabaseMetaData.getUDTs()</code> 方法也接受 SQL 
全限定名作為其第三個參數。這種情況下,將忽略目錄和架構模式參數。SQL 
全限定名可能包含通配符。例如,下列代碼示例與前一例等同。</p>

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

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

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

<p>此處,我們假設字符“.”是用來分隔全限定名的各組成元素。請注意全限定名的格式在數據庫之間可能會有所不同,所以通常不能象上例一樣對全限定名進行硬編碼。<code>DatabaseMetaData</code> 
接口提供了有關特定 JDBC 驅動程序所支持的全限定名格式的信息。</p>

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

<h4>7.3.3 檢索 Java 類對象</h4>

<p>JDBC 2.0 API 沒有為加載 Java 類文件(對應于存儲在數據庫中的 Java 
對象)提供任何特殊的支持。JDBC 應用程序通過調用 <code>Class.forName()</code> 
并且將類名作為參數傳遞,可以獲得對應于數據庫中的對象的類對象。換句話說,JDBC 
2.0 API 假定存儲在數據庫中的對象的字節碼是經由通用 Java 
語言架構加載的。</p>

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

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

<p><br>
</p>

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

<p>目錄</a> | <a href="jdbc2.0.frame6.html">上一頁</a> | <a
href="jdbc2.0.frame8.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 + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产高清亚洲一区| 欧美一区二区三区免费观看视频| 欧美又粗又大又爽| 精品久久久影院| 亚洲另类在线一区| 国产一区二区精品久久99| 欧美午夜精品免费| 国产精品久久毛片| 国产一区在线观看视频| 欧美在线观看一二区| 国产欧美精品一区二区色综合朱莉| 石原莉奈在线亚洲三区| 91网页版在线| 久久综合久久鬼色| 免费看欧美美女黄的网站| 在线观看日韩电影| 亚洲精品一二三区| www.av精品| 国产精品乱码久久久久久| 国产在线视频一区二区三区| 欧美一区二区三区在线观看视频| 洋洋av久久久久久久一区| 99久久精品免费看| 国产精品少妇自拍| 成人黄色免费短视频| 欧美韩国一区二区| 成人一二三区视频| 国产日韩高清在线| 国产成人无遮挡在线视频| 久久综合久色欧美综合狠狠| 经典三级视频一区| 精品成人佐山爱一区二区| 免费观看日韩电影| 日韩欧美成人激情| 韩国一区二区视频| 久久久久久一二三区| 国产精品一区二区在线观看网站| 欧美mv日韩mv国产网站app| 麻豆成人免费电影| 精品国产免费一区二区三区四区 | 国产成人亚洲综合色影视| 日韩免费电影一区| 国产麻豆成人传媒免费观看| 久久久久久久国产精品影院| 成人污视频在线观看| 亚洲欧美一区二区三区极速播放| 91麻豆精东视频| 亚洲国产欧美在线| 91精品免费观看| 韩日av一区二区| 国产精品超碰97尤物18| 在线观看视频91| 日韩av一区二| 国产亚洲一二三区| 91丨porny丨户外露出| 亚洲国产成人va在线观看天堂 | 不卡一卡二卡三乱码免费网站| 中文字幕精品三区| 在线欧美日韩精品| 久久99国产乱子伦精品免费| 国产精品久久久久久妇女6080| 日本精品一区二区三区高清| 免费三级欧美电影| 国产精品理伦片| 欧美丰满一区二区免费视频| 国内一区二区在线| 亚洲欧美欧美一区二区三区| 日韩欧美一区在线| 成人av在线资源| 午夜精品久久久久久久99水蜜桃| 精品国产露脸精彩对白| 91老司机福利 在线| 日韩av高清在线观看| 国产人妖乱国产精品人妖| 欧美亚洲综合久久| 播五月开心婷婷综合| 蜜桃久久久久久| 综合在线观看色| 欧美大度的电影原声| 一本大道久久a久久精品综合| 裸体在线国模精品偷拍| 亚洲天堂精品在线观看| 2欧美一区二区三区在线观看视频| 91蜜桃视频在线| 国产一区二区三区黄视频| 丝袜诱惑制服诱惑色一区在线观看| 国产欧美一区二区精品婷婷| 3751色影院一区二区三区| av成人免费在线观看| 久久97超碰国产精品超碰| 亚洲精品中文字幕在线观看| 国产欧美日韩三级| 日韩视频一区二区三区| 91精品1区2区| 99精品欧美一区| 国产酒店精品激情| 麻豆精品精品国产自在97香蕉| 亚洲欧美日韩成人高清在线一区| 国产午夜精品一区二区三区嫩草 | 在线视频你懂得一区二区三区| 国产精品亚洲一区二区三区妖精| 日日夜夜免费精品| 亚洲黄色小说网站| 亚洲欧美欧美一区二区三区| 国产精品素人一区二区| 欧美国产精品v| 久久婷婷色综合| 久久蜜桃av一区精品变态类天堂| 91精品久久久久久久久99蜜臂| 欧美午夜理伦三级在线观看| 一本大道综合伊人精品热热 | 国产精品自在欧美一区| 久久精品国产亚洲aⅴ| 日本欧美韩国一区三区| 偷拍亚洲欧洲综合| 婷婷国产在线综合| 日韩 欧美一区二区三区| 日本va欧美va瓶| 美国av一区二区| 国产麻豆日韩欧美久久| 国产又粗又猛又爽又黄91精品| 国产一区二区h| 成人做爰69片免费看网站| 成人黄色777网| 91在线视频官网| 日本道在线观看一区二区| 欧美亚洲一区三区| 91精品国产入口| 久久色中文字幕| 中文字幕一区av| 亚洲综合av网| 蜜臀a∨国产成人精品| 国产精品亚洲第一| 99国产精品久久久| 欧美日韩亚洲综合| 在线电影国产精品| 久久综合99re88久久爱| 亚洲欧洲成人av每日更新| 一区av在线播放| 蜜桃视频在线观看一区| 波多野结衣中文字幕一区二区三区| 91理论电影在线观看| 91精品国产黑色紧身裤美女| 久久久久久久一区| 亚洲中国最大av网站| 久久99国产精品久久99果冻传媒| 岛国一区二区在线观看| 欧美亚洲另类激情小说| 亚洲精品一区二区三区99 | 久久九九久久九九| 亚洲欧美日韩人成在线播放| 日韩激情一二三区| 国产iv一区二区三区| 欧美午夜在线观看| 国产拍欧美日韩视频二区| 亚洲午夜精品网| 国产成人综合亚洲网站| 欧美亚洲一区二区在线| 久久精品日韩一区二区三区| 亚洲一区中文在线| 国产精品一色哟哟哟| 欧美色成人综合| 中文字幕av一区二区三区高 | 欧美精品一区二区三区高清aⅴ | 91免费国产在线| 精品国产乱码久久久久久图片| 亚洲精品视频在线看| 精品一区二区三区免费| 欧美丝袜自拍制服另类| 国产精品水嫩水嫩| 久久国产三级精品| 欧美三级一区二区| 亚洲视频一区在线观看| 国产精品1区二区.| 日韩女优毛片在线| 亚洲成国产人片在线观看| 91视频com| 国产精品免费丝袜| 国产又黄又大久久| 日韩精品中午字幕| 日韩一区精品字幕| 在线精品视频免费播放| 亚洲天天做日日做天天谢日日欢 | 色婷婷精品久久二区二区蜜臂av| 精品久久久久久久久久久久久久久| 亚洲网友自拍偷拍| 91一区一区三区| 亚洲天堂a在线| 成人精品国产免费网站| 亚洲国产精品精华液2区45| 精品一区二区三区影院在线午夜| 91精品国产综合久久久久久漫画| 亚洲国产成人av网| 欧美午夜精品免费| 视频一区二区中文字幕| 9191成人精品久久| 日韩av电影免费观看高清完整版| 欧美日韩久久一区二区| 亚洲成人综合视频| 这里只有精品电影|