ISQLXML 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
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版本。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
屬性
| 名稱 | Description |
|---|---|
| BinaryStream |
回傳一個串流,可用來從此 SQL |
| CharacterStream |
回傳一個讀取器,可用來讀取此 SQL |
| Handle |
取得底層 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
| JniIdentityHashCode |
回傳包裹實例的 |
| JniManagedPeerState |
管理貴族的狀況。 (繼承來源 IJavaPeerable) |
| JniObjectReferenceControlBlock |
JavaTM 程式語言中 SQL XML 型別的映射。 (繼承來源 IJavaPeerable) |
| JniPeerMembers |
成員存取與召喚支援。 (繼承來源 IJavaPeerable) |
| PeerReference |
回傳JniObjectReference包裹後的 Java 物件實例。 (繼承來源 IJavaPeerable) |
| String |
以 XML 字串回傳此物件的資料。 |
方法
| 名稱 | Description |
|---|---|
| Disposed() |
當實例被處理後才被召喚。 (繼承來源 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果沒有未解決的參考資料,則 |
| Finalized() |
當實例完成後才會被通知。 (繼承來源 IJavaPeerable) |
| Free() |
此方法關閉該物件並釋放其持有的資源。 |
| GetSource(Class) |
回傳讀取此 SQLXML 實例所指定的 XML 值的來源。 |
| SetBinaryStream() |
擷取一個串流,可用來寫入此 SQLXML 實例所代表的 XML 值。 |
| SetCharacterStream() |
擷取一個串流,用來寫入此 SQLXML 實例所代表的 XML 值。 |
| SetJniIdentityHashCode(Int32) |
將回傳的值設為 |
| SetJniManagedPeerState(JniManagedPeerStates) |
JavaTM 程式語言中 SQL XML 型別的映射。 (繼承來源 IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
將回傳的值設為 |
| SetResult(Class) |
回傳一個結果,用於設定此 SQLXML 實例指定的 XML 值。 |
| UnregisterFromRuntime() |
取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。 (繼承來源 IJavaPeerable) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
JavaTM 程式語言中 SQL XML 型別的映射。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |