ISQLXML 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
SQL XML 類型的 JAVATM 程式設計語言中的對應。
[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
- 屬性
- 實作
備註
SQL XML 類型的 JAVATM 程式設計語言中的對應。 XML 是內建類型,會將 XML 值儲存為資料庫資料表資料列中的資料行值。 根據預設,驅動程式會將 SQLXML 物件實作為 XML 資料的邏輯指標,而不是資料本身。 SQLXML 物件在建立交易期間有效。
SQLXML 介面會提供將 XML 值當做 String、Reader 或 Writer,或是 Stream 存取的方法。 XML 值也可以透過 Source 或 set 做為 Result 來存取,這些 API 會與 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 輸出中的 XSLT 對 XML 值執行 XSLT 轉換,以檔案 resultFile:
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);
任何來源都可以使用呼叫 newTransformer () 所指定的身分識別轉換,轉換為 Result:
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。
在 SQLXML 物件中讀取和寫入 XML 值最多可以發生一次。 可讀取和無法讀取的概念狀態會判斷其中一個讀取 API 是否會傳回值或擲回例外狀況。 可寫入和不可寫入的概念狀態會判斷其中一個寫入 API 是否會設定值或擲回例外狀況。
狀態會從可讀取移至無法讀取一次 () 或呼叫任何讀取 API:getBinaryStream () 、getCharacterStream () 、getSource () 和 getString () 。 實作也會在發生這種情況時,將狀態變更為不可寫入。
狀態會從可寫入移至不可寫入一次 () 或呼叫任何寫入 API:setBinaryStream () 、setCharacterStream () 、setResult () 和 setString () 。 實作也可能會在發生這種情況時,將狀態變更為無法讀取。
如果 JDBC 驅動程式支援資料類型,則必須完整實作介面上 SQLXML
的所有方法。
已在 1.6 中新增。
此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據中所述的詞彙使用。
屬性
BinaryStream |
傳回可用來從這個 SQL |
CharacterStream |
傳回讀取器,這個讀取器可用來從這個 SQL |
Handle |
取得基礎 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
JniIdentityHashCode |
傳回包裝實例的 |
JniManagedPeerState |
受控對等的狀態。 (繼承來源 IJavaPeerable) |
JniPeerMembers |
成員存取和調用支援。 (繼承來源 IJavaPeerable) |
PeerReference |
傳 JniObjectReference 回已包裝 JAVA 物件實例的 。 (繼承來源 IJavaPeerable) |
String |
傳回這個物件的資料做為 XML 字串。 |
方法
Disposed() |
在處置實例時呼叫。 (繼承來源 IJavaPeerable) |
DisposeUnlessReferenced() |
如果沒有這個實例的未完成參考,則呼叫 |
Finalized() |
實例完成時呼叫。 (繼承來源 IJavaPeerable) |
Free() |
這個方法會關閉這個物件,並釋放其保留的資源。 |
GetSource(Class) |
傳回 Source,用於讀取這個 SQLXML 實例所指定的 XML 值。 |
SetBinaryStream() |
擷取可用來寫入這個 SQLXML 實例所代表之 XML 值的資料流程。 |
SetCharacterStream() |
擷取資料流程,以用來寫入這個 SQLXML 實例所代表的 XML 值。 |
SetJniIdentityHashCode(Int32) |
設定 所 |
SetJniManagedPeerState(JniManagedPeerStates) |
SQL XML 類型的 JAVATM 程式設計語言中的對應。 (繼承來源 IJavaPeerable) |
SetPeerReference(JniObjectReference) |
設定 所 |
SetResult(Class) |
傳回 Result,用於設定這個 SQLXML 實例所指定的 XML 值。 |
UnregisterFromRuntime() |
取消註冊此實例,讓執行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。 (繼承來源 IJavaPeerable) |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
SQL XML 類型的 JAVATM 程式設計語言中的對應。 |
GetJniTypeName(IJavaPeerable) |
SQL XML 類型的 JAVATM 程式設計語言中的對應。 |