語言

ISQLXML 介面

定義

JavaTM 程式語言中 SQL XML 型別的映射。

[Android.Runtime.Register("java/sql/SQLXML", "", "Java.Sql.ISQLXMLInvoker")]
public interface ISQLXML : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/sql/SQLXML", "", "Java.Sql.ISQLXMLInvoker")>]
type ISQLXML = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
屬性
實作

備註

JavaTM 程式語言中 SQL XML 型別的映射。 XML 是一種內建型別,將 XML 值以欄位值形式儲存在資料庫資料表的一列中。 預設驅動程式將 SQLXML 物件實作為指向 XML 資料的邏輯指標,而非資料本身。 SQLXML 物件在該交易建立期間內有效。

SQLXML 介面提供以字串、讀取器或寫入者,或串流形式存取 XML 值的方法。 XML 值也可透過原始碼或結果集合存取,這些方法可搭配 DOM、SAX 和 StAX 等 XML 解析器 API,以及 XSLT 轉換與 XPath 評估。

ResultSet、CallableStatement 和 PreparedStatement 這些介面中的方法,例如 getSQLXML,允許程式設計師存取 XML 值。 此外,此介面還具備更新 XML 值的方法。

SQLXML 實例的 XML 值可透過以下方式以 BinaryStream 形式取得

SQLXML sqlxml = resultSet.getSQLXML(column);
              InputStream binaryStream = sqlxml.getBinaryStream();

例如,要用 DOM 解析器解析 XML 值:

DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
              Document result = parser.parse(binaryStream);

或用 SAX 解析器解析 XML 值到你的處理器:

SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
              parser.parse(binaryStream, myHandler);

或用 StAX 解析器解析 XML 值:

XMLInputFactory factory = XMLInputFactory.newInstance();
              XMLStreamReader streamReader = factory.createXMLStreamReader(binaryStream);

由於資料庫可能使用優化的 XML 表示法,透過 getSource() 和 setResult() 存取該值,可以在不需序列化成串流表示法並解析 XML 的情況下,提升處理效能。

例如,要取得 DOM 文件節點:

DOMSource domSource = sqlxml.getSource(DOMSource.class);
              Document document = (Document) domSource.getNode();

或將值設為 DOM 文件節點至 myNode:

DOMResult domResult = sqlxml.setResult(DOMResult.class);
              domResult.setNode(myNode);

或是,將 SAX 事件傳送給你的處理器:

SAXSource saxSource = sqlxml.getSource(SAXSource.class);
              XMLReader xmlReader = saxSource.getXMLReader();
              xmlReader.setContentHandler(myHandler);
              xmlReader.parse(saxSource.getInputSource());

或設定 SAX 事件的結果值:

SAXResult saxResult = sqlxml.setResult(SAXResult.class);
              ContentHandler contentHandler = saxResult.getXMLReader().getContentHandler();
              contentHandler.startDocument();
              // set the XML elements and attributes into the result
              contentHandler.endDocument();

或是,要取得 StAX 事件:

StAXSource staxSource = sqlxml.getSource(StAXSource.class);
              XMLStreamReader streamReader = staxSource.getXMLStreamReader();

或設定 StAX 事件的結果值:

StAXResult staxResult = sqlxml.setResult(StAXResult.class);
              XMLStreamWriter streamWriter = staxResult.getXMLStreamWriter();

或者,使用 xsltFile 輸出到 file resultFile 的 XSLT 對 XML 值進行 XSLT 轉換:

File xsltFile = new File("a.xslt");
              File myFile = new File("result.xml");
              Transformer xslt = TransformerFactory.newInstance().newTransformer(new StreamSource(xsltFile));
              Source source = sqlxml.getSource(null);
              Result result = new StreamResult(myFile);
              xslt.transform(source, result);

或是,用來評估 XML 值上的 XPath 表達式:

XPath xpath = XPathFactory.newInstance().newXPath();
              DOMSource domSource = sqlxml.getSource(DOMSource.class);
              Document document = (Document) domSource.getNode();
              String expression = "/foo/@bar";
              String barValue = xpath.evaluate(expression, document);

要將 XML 值設定為 XSLT 轉換的結果:

File sourceFile = new File("source.xml");
              Transformer xslt = TransformerFactory.newInstance().newTransformer(new StreamSource(xsltFile));
              Source streamSource = new StreamSource(sourceFile);
              Result result = sqlxml.setResult(null);
              xslt.transform(streamSource, result);

任何 Source 都可以透過呼叫 newTransformer() 所指定的恆等變換轉換轉換為結果:

Transformer identity = TransformerFactory.newInstance().newTransformer();
              Source source = sqlxml.getSource(null);
              File myFile = new File("result.xml");
              Result result = new StreamResult(myFile);
              identity.transform(source, result);

要將原始碼內容寫成標準輸出:

Transformer identity = TransformerFactory.newInstance().newTransformer();
              Source source = sqlxml.getSource(null);
              Result result = new StreamResult(System.out);
              identity.transform(source, result);

要從 DOMResult 建立 DOMSource:

DOMSource domSource = new DOMSource(domResult.getNode());

當設定不完整或無效的 XML 值時,可能會導致 SQLException,或在執行()時發生例外。 所有串流必須在執行()發生前關閉,否則將拋出 SQLException。

讀取與寫入 XML 值至多一次。 可讀與不可讀的概念狀態決定了讀取 API 是否會回傳值或拋出例外。 可寫與不可寫的概念狀態決定了其中一個撰寫 API 是否會設定值或拋出例外。

一旦 free() 或呼叫任一讀取 API,狀態會從可讀轉為不可讀,例如 getBinaryStream()、getCharacterStream()、getSource() 和 getString()。 實作也可能在此時將狀態變更為不可寫入。

一旦空閒()狀態,狀態會從可寫轉為不可寫,或任何寫入 API 會被呼叫:setBinaryStream()、setCharacterStream()、setResult()和 setString()。 實作也可能將狀態改為不可讀取。

如果 JDBC 驅動程式支援該資料型態,介面上 SQLXML 的所有方法都必須完整實作。

新增於1.6版本。

Java 文件 java.sql.SQLXML

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

屬性

名稱 Description
BinaryStream

回傳一個串流,可用來從此 SQL XML 物件讀取二進位資料。

CharacterStream

回傳一個讀取器,可用來讀取此 SQL XML 物件中的字元資料。

Handle

取得底層 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
JniIdentityHashCode

回傳包裹實例的 java.lang.System.identityHashCode() 值。

(繼承來源 IJavaPeerable)
JniManagedPeerState

管理貴族的狀況。

(繼承來源 IJavaPeerable)
JniObjectReferenceControlBlock

JavaTM 程式語言中 SQL XML 型別的映射。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取與召喚支援。

(繼承來源 IJavaPeerable)
PeerReference

回傳JniObjectReference包裹後的 Java 物件實例。

(繼承來源 IJavaPeerable)
String

以 XML 字串回傳此物件的資料。

方法

名稱 Description
Disposed()

當實例被處理後才被召喚。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果沒有未解決的參考資料,則 Dispose()呼叫;否則,則不做任何事。

(繼承來源 IJavaPeerable)
Finalized()

當實例完成後才會被通知。

(繼承來源 IJavaPeerable)
Free()

此方法關閉該物件並釋放其持有的資源。

GetSource(Class)

回傳讀取此 SQLXML 實例所指定的 XML 值的來源。

SetBinaryStream()

擷取一個串流,可用來寫入此 SQLXML 實例所代表的 XML 值。

SetCharacterStream()

擷取一個串流,用來寫入此 SQLXML 實例所代表的 XML 值。

SetJniIdentityHashCode(Int32)

將回傳的值設為 JniIdentityHashCode

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

JavaTM 程式語言中 SQL XML 型別的映射。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

將回傳的值設為 PeerReference

(繼承來源 IJavaPeerable)
SetResult(Class)

回傳一個結果,用於設定此 SQLXML 實例指定的 XML 值。

UnregisterFromRuntime()

取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。

(繼承來源 IJavaPeerable)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

JavaTM 程式語言中 SQL XML 型別的映射。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於