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 值的方法。 还可以通过源或设置为结果来访问 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 中添加。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
属性
| 名称 | 说明 |
|---|---|
| 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) |
返回一个源,用于读取由此 SQLXML 实例指定的 XML 值。 |
| SetBinaryStream() |
检索可用于写入此 SQLXML 实例所表示的 XML 值的流。 |
| SetCharacterStream() |
检索要用于写入此 SQLXML 实例所表示的 XML 值的流。 |
| SetJniIdentityHashCode(Int32) |
设置由 |
| SetJniManagedPeerState(JniManagedPeerStates) |
SQL XML 类型的 JavaTM 编程语言中的映射。 (继承自 IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
设置由 |
| SetResult(Class) |
返回用于设置此 SQLXML 实例指定的 XML 值的结果。 |
| UnregisterFromRuntime() |
取消注册此实例,使运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。 (继承自 IJavaPeerable) |
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
SQL XML 类型的 JavaTM 编程语言中的映射。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |