类 com.ibm.etools.xmltosql.XMLToSQL

java.lang.Object
                com.ibm.etools.xmltosql.XMLToSQL

公用类 XMLToSQL 扩展对象

XMLToSQL 用来在使用 XML 文档的数据库表中插入、更新或删除行。XML 结构与表结构之间的映射是根据一组简单的映射规则来建立的。以下 XML 片段说明了映射规则:

   <rootElement>
     <EMPLOYEE>
       <FIRSTNAME>CHRISTINE</FIRSTNAME>
       <LASTNAME>HAAS</LASTNAME>
     </EMPLOYEE> 
     <EMPLOYEE>
       <FIRSTNAME>MICHAEL</FIRSTNAME>
       <LASTNAME>THOMPSON</LASTNAME>
     </EMPLOYEE> 
     ...
   </rootElement>

创建有效的 XML 文档的一种好方法是首先使用 SQLToXML 库生成一个 XML 文档,然后修改它以提供新值进行更新。还可以在编写将使用 XMLToSQL 库的代码之前使用“XML 至 SQL”向导来对 XML 文档进行单元测试,以确定其有效性。

表 1. 构造函数索引
构造函数 描述
XMLToSQL(SQLProperties) 这是唯一的构造函数。
表 2. 方法索引
方法 描述
void addToKeyColumns(String) 添加至将在构建 UPDATE 或 DELETE 的 where 子句时使用的键列名的列表。
void addToUpdateColumns(String) 添加至将更新或插入的列名称的列表。
void execute(Document, Boolean) 从“DOM 文档”更新表。
void execute(InputStream) 从 XML 输入流更新表。
void execute(InputStream, Boolean) 从 XML 输入流更新表。
void execute(String) 从 XML 文件更新表。
void execute(String, Boolean) 从 XML 文件更新表。
void finalize() 关闭连接(如果这是在内部创建的话)。
Vector getFailedStatements() 返回在执行期间已经失败的 SQL 语句的集合。
String getTableName(InputStream) 返回要更新的数据库表名。
String getTableName(String) 返回要更新的数据库表名。
void setConnection(Connection) 提供要用于更新表的 JDBC 连接。
void setTrace(Boolean) 设置跟踪标志。
void setTrace(Boolean, PrintWriter) 设置跟踪标志。
Boolean updateMultipleRows(String, Vector) 确定一旦调用了任何 execute() 方法是否就将更新多行。

构造函数

XMLToSQL
public XMLToSQL(SQLProperties sqlProperties)

这是唯一的构造函数。更新数据库表所必需的任何信息都是通过 SQLProperties 提供的。

方法

addToKeyColumns
public void addToKeyColumns(String columnName) throws Exception

添加至将在构建 UPDATE 或 DELETE 的 where 子句时使用的键列名的列表。如果表中具有主键,则将使用那些主键列。如果表中没有定义任何主键列,则此方法就很有用,但是在此情况下要特别小心,因为可能会无意中更新了多行。某个列不能既是键列又是更新列。此方法对 INSERT 没有任何影响。

addToUpdateColumns
public void addToUpdateColumns(String columnName) throws Exception

添加至将更新或插入的列名称的列表。如果在调用任何 execute() 方法之前未调用此方法,则 XMLToSQL 将为 UPDATE 或 INSERT 把除了键列之外的所有列添加至列表。某个列不能既是键列又是更新列。此方法对 DELETE 没有任何影响。

execute
public void execute(Document doc,
                    Boolean continueOnSQLError)
           throws SQLException, ClassNotFoundException, IOException,
                  SAXException, ParserConfigurationException

从“DOM 文档”更新表。根据 continueOnSQLError 的布尔值来应用不同的事务方式。当为 true 时,即使发生了错误,也将继续更新其它行。在这种情况下要查看哪些行失败了,需要调用 getFailedStatements()。如果 continueOnSQLError 为 false,则在发生错误时将回滚处理过的所有行。

execute
public void execute(InputStream inputStream)
           throws SQLException, ClassNotFoundException, IOException,
                  SAXException, ParserConfigurationException

从 XML 输入流更新表。如果更新一行时发生错误,则将对迄今为止已处理的所有行执行回滚。

execute
public void execute(InputStream inputStream,
                    Boolean continueOnSQLError)
           throws SQLException, ClassNotFoundException, IOException,
                  SAXException, ParserConfigurationException

从 XML 输入流更新表。根据 continueOnSQLError 的布尔值来应用不同的事务方式。当为 true 时,即使发生了错误,也将继续更新其它行。在这种情况下要查看哪些行失败了,需要调用 getFailedStatements()。如果 continueOnSQLError 为 false,则在发生错误时将回滚处理过的所有行。

execute
public void execute(String filename)
           throws SQLException, FileNotFoundException,
                  ClassNotFoundException, IOException, SAXException,
                  ParserConfigurationException

从 XML 文件更新表。如果更新一行时发生错误,则将对迄今为止已处理的所有行执行回滚。

execute
public void execute(String filename,
                    Boolean continueOnSQLError)
           throws SQLException, FileNotFoundException,
                  ClassNotFoundException, IOException, SAXException,
                  ParserConfigurationException

从 XML 文件更新表。根据 continueOnSQLError 的布尔值来应用不同的事务方式。当为 true 时,即使发生了错误,也将继续更新其它行。在这种情况下要查看哪些行失败了,需要调用 getFailedStatements()。如果 continueOnSQLError 为 false,则在发生错误时将回滚处理过的所有行。

finalize
public void finalize() 

关闭连接(如果这是在内部创建的话)。如果该连接是以外部方式提供的(通过使用 setConnection()),则不会执行任何操作。当对 XMLToSQL 进行垃圾回收时,JVM 调用此方法。

getFailedStatements
public Vector getFailedStatements() 

返回在执行期间已经失败的 SQL 语句的集合。仅当 continueOnError 标志为 true 时,此方法才有意义。

getTableName
public String getTableName(InputStream inputStream)
             throws IOException, SAXException,
                    ParserConfigurationException

返回要更新的数据库表名。提供此方法用来在执行 SQL 语句之前从 XML 输入流来确定表名。这是为了便于任何用户界面组件。

getTableName
public String getTableName(String filename)
             throws IOException, SAXException,
                    ParserConfigurationException

返回要更新的数据库表名。提供此方法用来在执行 SQL 语句之前从 XML 输入流来确定表名。这是为了便于任何用户界面组件。

setConnection
public void setConnection(Connection jdbcConnection) 

提供要用于更新表的 JDBC 连接。当应用程序要使用自己的连接管理机制(如连接池)时,此方法变得很有用。如果在调用任何 execute() 方法之前未调用此方法,则 XMLToSQL 使用 SQLProperties 的值来创建它自己的连接。

setTrace
public void setTrace(Boolean flag) 

设置跟踪标志。当该标志为 true 时,将把正在执行的 SQL 语句打印到控制台。缺省情况下,关闭跟踪。

setTrace
public void setTrace(Boolean flag,
                                          PrintWriter writer) 

设置跟踪标志。当该标志为 true 时,将把正在执行的 SQL 语句打印到写程序。缺省情况下,跟踪被设置为 false

updateMultipleRows
public Boolean updateMultipleRows(String uri,
                                                                    Vector keys) throws Exception

确定一旦调用了任何 execute() 方法是否就将更新/删除多行。当对没有任何主键的表执行操作时,可能会以 UPDATE/DELETE 方式更改多行。如果单个行将在它相应的源 XML 元素中受到影响时,则此方法将返回 false,否则,将返回 true。

相关任务
使用向导从 SQL 生成 XML
使用 XMLToSQL 类更新表
相关参考
类 com.ibm.etools.xmltosql.SQLProperties
类 com.ibm.etools.sqltoxml.SQLToXML
使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.