(2) 修改记录
在本节我们将使用customer_update.xml来更新CUSTOMEREMAIL字段。首先我们会检查客户记录是否存在,如果存在,将使用sql:update来更新记录。代码如下:
<xsl:if test="count($customer-table//CUSTOMERORDER) > 0">
<sql:update table="customer" connection="$connection" where="CUSTOMERID='{$customerid}'">
<sql:column name="CUSTOMERLASTNAME" select="CUSTOMERLASTNAME"/>
<sql:column name="CUSTOMERFIRSTNAME" select="CUSTOMERFIRSTNAME"/>
<sql:column name="CUSTOMEREMAIL" select="CUSTOMEREMAIL"/>
</sql:update>
</xsl:if>
(2) 删除记录
删除是CRUD最后一项。在这一节我们将使用sql:delete删除表中的记录。对于本文例子,我们将传递一个DELETE节点为空的customer_delete.xml文件,这个文件的内容如下:
<?xml version="1.0"?>
<CUSTOMERORDERS>
<DELETE></DELETE>
</CUSTOMERORDERS>
customer_delete.xsl中包含了删除address、orderitem、custorder和customer的sql:delete命令,文件的内容如下:
<xsl:template match="CUSTOMERORDERS">
<xsl:apply-templates select="DELETE" />
</xsl:template>
![]()
<xsl:template match="DELETE">
<sql:delete table="address" connection="$connection" />
<sql:delete table="orderitem" connection="$connection" />
<sql:delete table="custorder" connection="$connection" />
<sql:delete table="customer" connection="$connection" />
</xsl:template>
四、总结
从上面的案例中我们学习到了如何使用XQJ对数据库进行CRUD操作。使用XQuery的目的就是为了尽可能地少写Java代码。当然,在这个例子中有很多XSLT代码。但这些代码是为了保证程序的灵活性而存在的。如果我们要改变程序的功能,只需要改变这些XSLT代码就可以了。除了本文所讨论的构架,还有很多其他的开源或商业的XML产品。通过这些产品,可以在XML和关系数据之间架起一座桥梁。在以上的案例中实际上是直接基于XQuery的,而如果完全使用XQJ,我们将会获得更为强大的功能。一些新一代的构架还允许对XML数据库进行ACID操作。这些事务甚至可以作为一个子事务存在。如果使用这些强大的构架,开发人员将会如虎添翼。所写的代码将会大大减少,如果是这样,将会大大减少程序的bug。从而使程序更加健壮。
