oracle xsql详解(二)

1. DataBase Modifications with XSQL
1)build-in Actions xsql:dml

dml,(Data Manipulation Language),那就意味着改变数据库记录,xsql:dml元素用来执行dml语句,包括插入,更新,删除,甚至包括创建和删除数据库对象。xsql:dml元素对处理插入数据非常有用,你还可以用他执行pl/sql块。

如:

<? xml version="1.0" ?>
< page   xmlns:xsql ="urn:oracle-xsql"  connection ="xsql_test" >
< dml >
< xsql:dml >
begin
    insert into xsql_employee values(3, 'lin', 'su', 'coder');
    commit;
end;
</ xsql:dml >
</ dml >
< xsql:query >
select * from xsql_employee
</ xsql:query >
</ page >

 

oracle xsql详解(二)_第1张图片

对与简单的数据库操作来说,内置的dml标签 无疑非常方便,但是对于复杂的操作,他则显得力不从心。

因此,我们需要学习更深入的xsql:dml操作。

2).form 参数和格式化的数据结构

我们可以通过xstl来格式化数据:

1.格式化从xsql:query输出的数据。

2.格式化从客户端传过来的参数。

见下图:

oracle xsql详解(二)_第2张图片

3).xsql:insert-request

用于执行插入操作

让我们一步一步来看一个例子:

首先第一步我们需要一个html表单,新建一个html文件,名为signup.html

<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta  http-equiv ="Content-Type"  content ="text/html; charset=UTF-8" >
< title > Insert title here </ title >
</ head >
< body >
< h1 > sign up </ h1 >
< form  action ="signup.xsql"  method ="post" >
< table  border ="0" >
< tr >
< td > Last Name: </ td >< td >< input  type ="text"  name ="lastname"   /></ td >
</ tr >
< tr >
< td > First Name: </ td >< td >< input  type ="text"  name ="firstname"   /></ td >
</ tr >
< tr >
< td > Job: </ td >< td >< input  type ="text"  name ="job"   /></ td >
</ tr >
< tr >
< td  colspan ="2"  align ="center" >< input  type ="submit"  value ="Sign Me Up!" ></ td >
</ tr >
</ table >
</ form >
</ body >
</ html >

好了,html写好了,下一步我们需要创建一个xsql page来插入数据,不过再这之前,我们有必要来了解下这整个过程,正如你所猜测的,http post request 以键值对的形式传送着参数。xsql默认的把他们转换为简单的xml文档。然后你的样式表把请求中的xml文档转换为格式化后修改操作需要的的xml格式。

我们不妨看一下,xsql默认转换成的简单的xml是什么样的。

下面的xsql page将显示默认的xml参数格式。

新建一个xsql page 名为 signup.xsql

<? xml version="1.0" ?>
< xsql:include-request-params   xmlns:xsql ="urn:oracle-xsql" />

打开signup.html输入数据后提交.得到如下页面:

oracle xsql详解(二)_第3张图片

而我们需要把这个xml格式转换为如下:

<ROWSET>
<ROW>
<LASTNAME>lastnameValue</LASTNAME>
<FIRSTNAME>firstnameValue</FIRSTNAME>
<JOB>jobValue</JOB>
</ROW>
</ROWSET>

我们通过下面的xslt来进行转换,新建一个xsl文件,名为signup.xsl

<? xml version="1.0" ?>
< xsl:stylesheet  xmlns:xsl ="http://www.w3.org/1999/XSL/Transform"  version ="1.0" >
< xsl:template  match ="/" >
< ROWSET >
< ROW >
< LASTNAME >< xsl:value-of  select ="request/parameters/lastname" /></ LASTNAME >
< FIRSTNAME >< xsl:value-of  select ="request/parameters/firstname" /></ FIRSTNAME >
< JOB >< xsl:value-of  select ="request/parameters/job" /></ JOB >
</ ROW >
</ ROWSET >
</ xsl:template >
</ xsl:stylesheet >

我们可以验证一下是否转换成功,在刚才的signup.xsql中引用xsl文件

如下:

<? xml version="1.0" ?>
<? xml-stylesheet type="text/xsl" href="signup.xsl" ?>
< xsql:include-request-params   xmlns:xsql ="urn:oracle-xsql" />

再次提交表单,看到已经格式化好的页面:

oracle xsql详解(二)_第4张图片

最后我们需要将格式化好的xml插入到数据库中,修改signup.xsql,代码如下:

<? xml version="1.0" ?>
< page  connection ="xsql_test"  xmlns:xsql ="urn:oracle-xsql" >
< xsql:insert-request  table ="xsql_employee"  transform ="signup.xsl" />
</ page >

运行结果如下:

oracle xsql详解(二)_第5张图片

再看数据库,数据已经插入了。

4).xsql:update-request

xsql:update-request xsql:insert-request非常类似,处理过程都是一样的。不同之处在于:更新是基于已经存在的某条记录更新,而插入不需要 。所以xsql在更新的时候需要知道更新哪条记录。在xsql中用xsql:update-requestkey-columns属性来指定。他列出了需要更新的字段。

下面看一个例子:

html页面:useredit.html

<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta  http-equiv ="Content-Type"  content ="text/html; charset=UTF-8" >
< title > Insert title here </ title >
</ head >
< body >
< h1 > User Info </ h1 >
< form  action ="xsql/user-update.xsql"  method ="post" >
< table  border ="0" >
< tr >
< td > Last Name: </ td >< td >< input  type ="text"  name ="lastname"   /></ td >
</ tr >
< tr >
< td > First Name: </ td >< td >< input  type ="text"  name ="firstname"   /></ td >
</ tr >
< tr >
< td > Job: </ td >< td >< input  type ="text"  name ="job"   /></ td >
</ tr >
< tr >
< td  colspan ="2"  align ="center" >< input  type ="submit"  value ="Update" ></ td >
</ tr >
</ table >
</ form >
</ body >
</ html >

user-update.xsql

<? xml version="1.0" ?>
<? xml-stylesheet type="text/xsl" href="successful.xsl" ?>
< page  connection ="xsql_test"  xmlns:xsql ="urn:oracle-xsql" >
< xsql:update-request  table ="xsql_employee"  key-columns ="LASTNAME"  transform ="signup.xsl" />
</ page >

这里我们加了一个successful.xsl来格式化插入成功后显示的信息。

successful.xsl

<? xml version="1.0" ?>
< xsl:stylesheet  xmlns:xsl ="http://www.w3.org/1999/XSL/Transform"  version ="1.0" >
< xsl:template  match ="/" >
< html >
< h1 > Update successful! </ h1 >
</ html >
</ xsl:template >
</ xsl:stylesheet >

运行结果:

oracle xsql详解(二)_第6张图片

oracle xsql详解(二)_第7张图片

5).xsql:delete-request

delete-requestupdate-request一样,也是指定key-columns来确定要删除的行。这里就不再重复了。

你可能感兴趣的:(oracle)