ISQLXML 接口

定义

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 值的方法。 还可以通过源或设置为结果来访问 XML 值,这些 API 与 DOM、SAX 和 StAX 等 XML 分析器 API 以及 XSLT 转换和 XPath 评估一起使用。

接口 ResultSet、CallableStatement 和 PreparedStatement 等方法允许程序员访问 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 指定的标识转换将任何源转换为结果():

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 对象或从 SQLXML 对象读取和写入 XML 值最多一次。 可读和不可读的概念状态确定其中一个读取 API 是否会返回值或引发异常。 可写和不可写的概念状态确定其中一个写入 API 是否会设置值或引发异常。

状态从可读变为不可读()或调用任何读取 API:getBinaryStream()、getCharacterStream()、getSource()和 getString()。 实现还可以在发生这种情况时将状态更改为不可写。

状态从可写变为不可写入一次()或调用任何写入 API:setBinaryStream()、setCharacterStream()、setResult()和 setString()。 实现还可以在发生这种情况时将状态更改为不可读。

如果 JDBC 驱动程序支持数据类型,则必须完全实现接口上 SQLXML 的所有方法。

已在 1.6 中添加。

Java文档java.sql.SQLXML

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

属性

名称 说明
BinaryStream

返回可用于从此 SQL XML 对象读取二进制数据的流。

CharacterStream

返回可用于从此 SQL XML 对象读取字符数据的读取器。

Handle

获取基础 Android 对象的 JNI 值。

(继承自 IJavaObject)
JniIdentityHashCode

返回包装实例的值 java.lang.System.identityHashCode()

(继承自 IJavaPeerable)
JniManagedPeerState

托管对等方的状态。

(继承自 IJavaPeerable)
JniPeerMembers

成员访问和调用支持。

(继承自 IJavaPeerable)
PeerReference

返回JniObjectReference包装的Java对象实例。

(继承自 IJavaPeerable)
String

以 XML 字符串的形式返回此对象的数据。

方法

名称 说明
Disposed()

在释放实例时调用。

(继承自 IJavaPeerable)
DisposeUnlessReferenced()

如果没有对此实例的未完成引用,则调用 Dispose();否则不执行任何操作。

(继承自 IJavaPeerable)
Finalized()

在实例完成时调用。

(继承自 IJavaPeerable)
Free()

此方法关闭此对象并释放它保存的资源。

GetSource(Class)

返回一个源,用于读取由此 SQLXML 实例指定的 XML 值。

SetBinaryStream()

检索可用于写入此 SQLXML 实例所表示的 XML 值的流。

SetCharacterStream()

检索要用于写入此 SQLXML 实例所表示的 XML 值的流。

SetJniIdentityHashCode(Int32)

设置由 JniIdentityHashCode. 返回的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

SQL XML 类型的 JavaTM 编程语言中的映射。

(继承自 IJavaPeerable)
SetPeerReference(JniObjectReference)

设置由 PeerReference. 返回的值。

(继承自 IJavaPeerable)
SetResult(Class)

返回用于设置此 SQLXML 实例指定的 XML 值的结果。

UnregisterFromRuntime()

取消注册此实例,使运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。

(继承自 IJavaPeerable)

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

SQL XML 类型的 JavaTM 编程语言中的映射。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于