首页 > 代码库 > ESql标签(对数据库进行增删查改及命令操作)

ESql标签(对数据库进行增删查改及命令操作)

功能:WebEasy的核心功能之一,作为平台持久层的接口,用于对数据库的所有操作  

·        对数据库进行增删查改及命令操作

查询时会返回一个书包(Bag)

别名为EasySql

  用法:<esqlmodule=模块名 [id=书包名] [act=edit|exe|batch|refresh] [p] [commit=true|false|end]>SQL语句</esql>

module连接数据库的模块名,必选项,在WebEasy系统目录下(如D:/webeasy),可以建立多个子目录,如help/base等,在子目录如果有一个database.xml文件,该子目录就会被系统识别为一个可用的数据库连接模块。系统要访问数据库时,首先要根据模块来确定如何与数据库建立持久关系,database.xml文件中保存了连接配置信息(后面的章节将介绍多种数据库的配置方法),如

<?xmlversion="1.0" encoding="GB2312"?>
<Database DbUrl="jdbc:odbc:driver={Microsoft Access Driver(*.mdb)};dbq=" DriverName="sun.jdbc.odbc.JdbcOdbcDriver"Name="help/htok.mdb"/>

SQL语句:要执行的SQL语句,必填

id:书包名,可选项,查询数据库时返回的结果就放在该书包中

act:动作,可选项,执行增、删、改时值为edit,表示要修改数据库中的数据,执行设置数据库系统参数等操作时为exe,执行批量处理操作时为batch,更新database.xml配置内容时为refresh

p:SQL语句是不是来源于参数,如果整条SQL语句都是从其他书包中取出时必填,一般情况下用不到,如:<bag id=pPage><we name=sql>select * from Messages</we></bag>
<esql module=helpid=listp>@{pPage:sql}</esql>

commit:提交,可选项,默认为commit=true(提交单条SQL语句),执行事务时第一条设为commit=false,最后一条设为commit=end,同一模块的多个esql标签中的SQL语句会组成一个事务提交到数据库。 

还是以实际项目为例:

一政府行政单位的服务审批项目,后台数据库为SQLServer2005,数据模块文件dc/database.xml为

<?xml version="1.0" encoding="GB2312"?>
<Database DbUrl="jdbc:sqlserver://localhost:1433" DriverName="com.microsoft.sqlserver.jdbc.SQLServerDriver" Name="htok_cm" Password="321654" UserName="xa" age="120" frequency="60" max="18" min="3" pause="3" timesUsed="30" trace="false" weName="综合平台数据库"></Database>
集成一手持终端的数据库为Oracle,数据模块文件other/database.xml为
<?xml version="1.0" encoding="GB2312"?>
<Database DbUrl="jdbc:oracle:thin:@192.168.20.84:1521" DriverName="oracle.jdbc.driver.OracleDriver" Name="oracle9" Password="wxwg" UserName="wxwg" age="120" frequency="60" max="6" min="0" pause="1" timesUsed="30" trace="false" weName="接处警审批数据"/>
流程跟踪查询:
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
	<TR vAlign=top>
	<TD style="BACKGROUND-REPEAT: repeat-x" background="@{sys:path}images/Title2.gif">
		<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
			<TR vAlign=top>
			<TD height=32 style="BACKGROUND-REPEAT: no-repeat" noWrap width="100%" class="GAP1">
			<P style="MARGIN-LEFT: 2px; MARGIN-RIGHT: 3px"><IMG height=9 src="@{sys:path}images/k7.gif" width=9 align=absMiddle> 流程跟踪</P></TD></TR></TABLE>
	</TD>
	<TD width=10 class="GAP1"><IMG height=21 src="@{sys:path}images/Title3.gif" width=16></TD>
	<TD style="BACKGROUND-REPEAT: repeat-x" vAlign=bottom width="100%" background="@{sys:path}images/Title4.gif">
	<chtml>
	<Bag id=sys><we name=NodeID>c0</we></Bag>
	<call>checkAcl</call>
	<if x="@{sys:canDo}">
		<div align=right x=true><a href="javascript:doDel()" title="删除误提交的审批项">[删除]</a>  </div>
	</if>
	</chtml>
	</TD>
	</TR>
</TABLE>
<table width="99%" border="0" cellpadding="0" cellspacing="1" class="bg1" align=center>
	<tr align=center height="24"><th>审批内容</th><th>审批流程</th><th>步骤</th><th>接收时间</th><th>当前审批人</th></tr>
<script>
var AllPos =  new Array();
var ids =  new Array();
</script>
<chtml>
<!-- 执行查询 -->
<esql module=base id=list>
select htok_report.we_id,TITLE,FLOW_NAME,WE_NAME,RECEIVE_TIME,CREATORCN,FLOW_NODE.flow,WORKER from htok_report,FLOW_NODE where htok_report.flow=FLOW_NODE.flow and PASS_BEYOND='0' order by htok_report.we_id
</esql>
<bag id=pPage><we name=url>@{sys:face}site/look.html?we_id=</we></bag>
<for bags=list end="@{list:getLength}">
	<ESql module=base id=user>Select CNNAME From BASE_USERS Where USERNAME='@{list:WORKER}'</ESql>
      <tr height="22" class=bg0 onclick="clickRow(@{list:getSuffix});" id="r@{list:getSuffix}">
        <td><a class="middle" href="@{pPage:url}@{list:we_id}" target=_blank>@{list:TITLE}</a></td>
        <td><a class="middle" href="@{pPage:url}@{list:we_id}" target=_blank>@{list:FLOW_NAME}</a></td>
        <td><a class="middle" href="@{pPage:url}@{list:we_id}" target=_blank>@{list:WE_NAME}</a></td>
        <td><a class="middle" href="@{pPage:url}@{list:we_id}" target=_blank>@{list:RECEIVE_TIME}</a></td>
        <td><a class="middle" href="@{pPage:url}@{list:we_id}" target=_blank>@{user:CNNAME}</a></td>
      </tr>
	<script>AllPos[@{list:getSuffix}]=0;ids[@{list:getSuffix}]='@{list:WE_ID}';</script>
</for>
</chtml>
    </table>
	<table border="0" cellpadding="0" cellspacing="0" align="center">
      <tr height="25">
        <td align="center">
        <chinahtml>
		<if x="@{list:getLength}">
			<p x=0>当前没有要审批的任务!!! </p>
		</if>
		</chinahtml>
		</td>
	  </tr>
    </table>

效果:

技术分享

效果不错吧!

系统通过ESql标签,轻松实现对数据库的各种操作。更有意思的是,可以同时链接多个不同的数据库。

轻开平台资源下载及说明

平台免费下载:http://download.csdn.net/detail/tx18/8381859

最新开发手册下载:http://download.csdn.net/detail/tx18/8411089

开发实例:轻开B2C电子商务网站,免费下载:http://download.csdn.net/detail/tx18/8318585

轻开平台会不定期升级为大家提供更多强大而Easy的功能,请留意最新的开发手册


ESql标签(对数据库进行增删查改及命令操作)