Sql 标记

来源:互联网 发布:1688域名多少钱 编辑:程序博客网 时间:2024/05/02 06:45
用途
Sql 标记主要用于处理与数据库相关的操作在<Sql></Sql>标记之间可以插入任何
静态的SQL 语句这些SQL 语句将会被发送到数据库引擎中去并被执行同时Sql 标记
还可以配合SqlParam 标记一起使用创建动态的SQL 语句Sql 标记可以通过三种方式与
数据库系统建立连接第一种方式是直接使用现存的JDBC Connection 对象
(java.sql.Connection 接口第二种方法是使用J2EE Data Source(javax.sql.DataSource)对象
这是一个JNDI 服务对象第三种方法是使用指定的JDBC 数据库驱动程序与数据库服务的
URL 地址与数据库服务器建立连接这三种方法我们都会在下面的例子中涉及
Sql 标记可以包含在Transaction 标记中这时Sql 标记体内的操作被当作事务的一部
分执行这个事务中的操作一起被执行如果每一个操作都成功了那么所有的状态改变
都将成为事实如果有任何一个操作失败了那么整个操作就会失败这个事务所涉及的
状态的改变都不会起任何作用而保持原状
语法
<sql ...>
sql statement with optional <sqlparam .../>
...
</sql>
属性
connection 指定Connection 对象的名称
id 执行SQL 语句所返回的记录集的名字就是id 属性的值如果执行SQL 语句后不
返回任何有效的记录集那么这个属性将会被忽略
scope 该属性类似于JavaBeans Scope 属性可以取的值为Page Session Request
Application 
datasrc 指定数据源的名字该名字代表一个JNDI 服务也就是说我们可以把数据
源作为一个JNDI 服务发布在datasrc 属性中指定这个JNDI 服务的名字就可以访问此
数据源了
username 指定访问数据库所需要的用户名
password 指定访问数据库所需要的密码
driver 指定访问数据库所需要的驱动程序名例如jdbc.odbc.JdbcOdbcDriver
url 指定数据源的标示例如jdbc:odbc:test
TLD 文件
<tag>
<name>sql</name>
<tagclass>allaire.taglib.SqlTag</tagclass>
<teiclass>allaire.taglib.SqlTei</teiclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>id</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>scope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>driver</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>url</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>datasrc</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>connection</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>username</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>password</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
用法示例
<%@ page import="java.sql.*” %>
<%@ page import=”javax.sql.* allaire.taglib.*" %>
<%@ taglib uri="jruntags" prefix="jrun" %>
<%
Class.forName("jdbc.odbc.JdbcOdbcDriver");
Connection con =DriverManager.getConnection("jdbc:odbc:test" ”sa” ””);
%>
<jrun:sql connection="<%= con %>id="q1">
SELECT * FROM goods
</jrun:sql>
<jrun:sql driver="jdbc.odbc.JdbcOdbcDriver " url=" jdbc:odbc:test" id="q2"
username=”sa” password=””>
SELECT * FROM goods
</jrun:sql>
<%-- sql usesjava:comp/env/jdbc/dsn1 to lookup a datasource --%>
<jrun:sql datasrc="dsn1" id="q3">
SELECT * FROM goods
</jrun:sql>
<%-- you can enumerate theQueryTable by: --%>
<jrun:param id="q3" type="QueryTable"/>
<jrun:foreach item="x" group="<%= q3.Names %>">
<%= x %><br>
</jrun:foreach>
<jrun:foreach group="<%= q3 %>">
<jrun:foreach item="y" group="<%= q3.Values %>">
<%= y %><br>
</jrun:foreach>
</jrun:foreach>
<%-- OR --%>
<jrun:param id="q3" type="QueryTable"/>
<jrun:foreach group="<%= q3 %>">
<%
int count = q3.getColumnCount();
for (int i = 0;i < count;i += 1)
{
%>
<%= q3.get(i) %><br>
<%
}
%>
</jrun:foreach>
<%-- OR --%>
<jrun:param id="q3" type="QueryTable"/>
<%while (q3.next())
{
%>
<jrun:foreach item="y" group="<%= q3.Values %>">
<%= y %><br>
</jrun:foreach>
<%
}
%>
<%-- OR if you want to usecolumn names... --%>
<jrun:param id="q3" type="QueryTable"/>
<jrun:foreach group="<%= q3 %>">
<%= q3.get("id"%><br>
<%= q3.get("lastname"%><br>
<%= q3.get("firstname"%><br>
</jrun:foreach>
<%-- OR if you want to usecolumn index... --%>
<jrun:param id="q3" type="QueryTable"/>
<jrun:foreach group="<%= q3 %>">
<%= q3.get(1) %><br>
<%= q3.get(2) %><br>
<%= q3.get(3) %><br>
</jrun:foreach>
代码解释
在上面的实例中读者只需要了解Sql 标记是如何与数据源建立连接的就可以了第
一种情况首先创建一个Connection 接口的实例对象然后指定Sql 标记的connection 
性的值为这个Connection 对象第二种情况直接指定Sql 标记的driver 属性和url 属性的
Sql 标记就利用这些信息与数据库建立连接第三种情况指定datasrc 属性的值为JNDI
服务名dsn1 JSP 引擎会自动寻找(lookup)这个服务然后通过它来访问数据源与数据源
建立连接以后就可以把SQL 语句发送到数据源中去执行的结果将会保存到一个记录集
对象中这个记录集对象的名字就是Sql 标记id 属性的值接下来就是利用各种方法把
记录集对象中的数据输出来这里用到了ForEach 标记和SqlParam 标记的功能我们将在

下面分别介绍这两个标记的功能。

。。。。。


http://www.57itsq.com/read.php?tid-1306.html

原创粉丝点击