日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
創(chuàng)新互聯(lián)OceanBase教程:OceanBaseLOB數(shù)據(jù)接口

OceanBase Connector/J 提供了用于寫入和讀取整個 LOB 內容的簡化機制,稱為數(shù)據(jù)接口。

成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站建設、成都做網站、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯(lián)網時代的建陽網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

數(shù)據(jù)接口使用標準的 JDBC 方法(如 getString 和 setBytes)讀取和寫入 LOB 數(shù)據(jù)。使用數(shù)據(jù)接口更易于編碼且速度更快, 但與標準 java.sql.Blob、java.sql.Clob 和 java.sql.NClob 接口不同,它不提供隨機訪問功能,并且訪問數(shù)據(jù)量不能超出 2147483648 個元素。

Input

OceanBase Connector/J 擴展了 PreparedStatement 的 setBytes、setBinaryStream、setString、setCharacterStream 和 setAsciiStream 方法,以增強使用 BLOB、CLOB 和 NCLOB 的能力。

對于服務器端內部驅動程序,當前對 SQL 語句(如 INSERT 語句)的操作限制為 4000 字節(jié)。此限制不適用于 PL 語句。INSERT 語句通過包裹在 PL 塊中來解決這一限制,方法如下:


BEGIN
 INSERT id, name INTO clob_emp VALUES(?,?);
END

對于大型數(shù)據(jù)共有三種輸入模式,如下所示:

  • 直接綁定

    此綁定方式的大小受到限制,但效率最高。它將所有輸入列的數(shù)據(jù)內聯(lián)在的數(shù)據(jù)塊中,再發(fā)送到服務器。所有數(shù)據(jù)(包括批處理的多次執(zhí)行)都在單個網絡操作中發(fā)送。

  • 流綁定

    此綁定將數(shù)據(jù)放在末尾。它將批量大小限制為一個,因而可能需要多次往返才能完成。

  • LOB 綁定

    此綁定創(chuàng)建一個臨時 LOB,將數(shù)據(jù)復制到 LOB,并綁定 LOB 定位器。臨時 LOB 在執(zhí)行后自動釋放。創(chuàng)建臨時 LOB 然后寫入 LOB 的操作需要多次往返。定位器的輸入可以是成批的。

對于 SQL 語句,輸入模式的使用注意事項如下:

  • setBytes 和 setBinaryStream 方法對小于 4001 字節(jié)的數(shù)據(jù)使用直接綁定。

  • setBytes 和 setBinaryStream 方法對大于 4000 字節(jié)的數(shù)據(jù)使用流綁定。

  • setAsciiStreamsetBinaryStream 和 setCharacterStream 方法將長參數(shù)作為表單長度,使用長度大于 2147483648 的 LOB 綁定。未指定長度的表單始終使用 LOB 綁定。

  • setString、setCharacterStream 和 setAsciiStream 方法對小于 32767 個字符的數(shù)據(jù)使用直接綁定。

  • setString、setCharacterStream 和 setAsciiStream 方法對大于 32766 個字符的數(shù)據(jù)使用流綁定。

  • setCharacterStream 方法的新形式需要使用 long 參數(shù)的中作為長度,對大于 2147483647 的長度使用 LOB 綁定。未指定長度的表單始終使用 LOB 綁定。

對于 PL 語句,輸入模式的使用注意事項如下:

  • setBytes 和 setBinary 流式方法對小于 32767 字節(jié)的數(shù)據(jù)使用直接綁定。

  • setBytes 和 setBinaryStream 方法對大于 32766 字節(jié)的數(shù)據(jù)使用 LOB 綁定。

  • setString、setCharacterStream 和 setAsciiStream 方法對數(shù)據(jù)庫字符集中小于 32767 字節(jié)的數(shù)據(jù)使用直接綁定。

    說明 

    BLOB 無法使用 setString 來設置。

  • setString、setCharacterStream 和 setAsciiStream 方法對數(shù)據(jù)庫字符集中大于 32766 字節(jié)的數(shù)據(jù)使用 LOB 綁定。

自動切換輸入模式會影響某些程序。自動切換也可能導致附加的服務器端解析,以適應參數(shù)類型的更改。如果重復執(zhí)行語句時,數(shù)據(jù)大小在閾值上下不斷變化,則將導致性能影響。切換到流模式也會影響批處理。

Output

ResultSet 和 CallableStatement 的 getBytes、getBinaryStreamgetString、getCharacterStream 和 getAsciiStream 方法已擴展為可與 BLOBCLOB 或 OUT 參數(shù)一起使用。 這些方法適用于長度小于 2147483648 的任何 LOB

說明 

getString 和 getNString 方法不能用于檢索 BLOB 列值。

數(shù)據(jù)接口通過訪問驅動程序中的 LOB 定位器進行操作,并且對應用程序編程是透明的??梢愿鶕?jù)需要使用 LOB 預取來減少或消除的其他數(shù)據(jù)庫往返行程。

可以使用與 LONG RAW 和 LONG 數(shù)據(jù)相同的流式傳輸機制來讀取和寫入 BLOB 或 CLOB 數(shù)據(jù)。可以在列上使用 defineColumnType(nn,Types.LONGVARBINARY) 或 defineColumnType(nn,Types.LONGVARCH 方法來讀取數(shù)據(jù),產生直接流,就好像是讀取 LONG RAW 或 LONG 列的數(shù)據(jù)一樣。

CallableSatement 和 IN OUT 參數(shù)

PL 要求用作 IN OUT 參數(shù)輸入和輸出的 Java 類型必須相同。

對于存儲過程的 IN OUT CLOB 參數(shù),希望使用 setString 方法設置該參數(shù)的值。對于任何 IN 和 OUT 參數(shù),必須對相同的類型進行綁定。如果無法確定數(shù)據(jù)大小,則自動切換輸入模式會引發(fā)錯誤。例如,如果知道輸入數(shù)據(jù)和輸出數(shù)據(jù)都不會大于 32766 字節(jié),則可以對輸入?yún)?shù)使用 setString 方法,并將 OUT 參數(shù)注冊為 Types.VARCHAR,對輸出參數(shù)使用 getString 方法。

更好的解決方案是將存儲過程更改為具有單獨的 IN 和 OUT 參數(shù)。 如下例所示:


CREATE PROCEDURE clob_obproc( cc IN OUT CLOB );

更改為如下示例:


CREATE PROCEDURE clob_obproc( cc_in IN CLOB, cc_out OUT CLOB );

另一個解決方法是使用容器塊進行調用。clob_plproc 存儲過程可以用 Java 字符串包裝,以用于 prepareCall 語句,如下所示:


"DECLARE cc_temp; BEGIN cc_temp := ?; clob_plproc( cc_temp); ? := cc_temp; END;"

無論哪種情況,都可以在第一個參數(shù)上使用 setString 方法,在第二個參數(shù)上使用 registerOutParameter 方法和 Types.CLOB。

大小限制

如果創(chuàng)建非常大的 byte 數(shù)組或 String 可能會對 Java 內存管理系統(tǒng)的性能產生影響。閱讀 Java 虛擬機(JVM)供應商提供的有關大量數(shù)據(jù)元素影響內存管理的相關信息,并考慮改用流接口。


網站欄目:創(chuàng)新互聯(lián)OceanBase教程:OceanBaseLOB數(shù)據(jù)接口
URL鏈接:http://www.dlmjj.cn/article/djhpies.html