SQL 標籤

SQL標籤封裝了數據庫訪問的通用邏輯,是用SQL標籤可以大大簡化數據庫操作。SQL標籤包含了查詢、更新、事務處理和設置數據源等方面的功能。
 
1.      <sql:setDataSource dataSource=”” url=”” driver=”” user=”” password=”” var=”” scope=””> 這個標籤用於設置數據源,可以通過scope指定數據源的範圍,這裏有兩種類型的數據源,一種是直接使用在web應用中配置的數據源,只要指定它的JNDI名字就可以,另一種是指定所有的數據庫連接屬性。其中dataSource如果是String類型,那麼表示JNDI名稱空間中的DataSource的名字;如果是DataSource,那麼是一個可以獲得的數據源對象;url表示訪問驅動程序的URL;driver表示指定驅動程序的實現類;user訪問數據庫的用戶名;password表示訪問數據庫的密碼;var表示標識這個DataSource的變量;scope表示指定這個DataSource的範圍。例如:
<sql:setDataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
              user="liky"
password="redhat"
              url="jdbc:sqlserver://localhost:1433;DatabaseName=csu"
var="db" />

 
2.        <sql:query dataSource=”” sql=”” maxRows=”” startRow=”” var=”” scope=””> 這個標籤用於執行數據庫查詢操作。其中dataSource表示在setDataSource中的dataSource數據源;sql表示要執行的SQL語句;var表示保存了查詢的結果集;scope表示變量的有效範圍;maxRows表示返回的最大行數;startRow表示從第幾行開始查詢,這兩個屬性在無腳本實現分頁時非常有用。例如:
<sql:query dataSource="${db}"var="ursers"
              sql="select * from bbs_user where id > ? "
scope="page" startRow="10" maxRows="10">
              <sql:param>12</sql:param>
</sql:query>
 

3.        <sql:update dataSource=”” sql=”” var=”” scope=””> 這個標籤用於對數據庫進行更新操作,這裏所謂的更新包括insert、update和delete數據庫操作語句。此外還包括一些沒有返回結果集的SQL操作語句,例如創建表,更改表的結構等等。其中dataSource表示在setDataSource中的dataSource數據源;sql表示要執行的SQL語句;var表示保存了語句執行結果的變量;scope表示變量的有效範圍。例如:如果是更新、刪除、插入,那麼表示更新的數據行數。例如:
<sql:query
dataSource="${db}"var="ursers"
sql="select * from bbs_user"
              scope="page" startRow="10" maxRows="10">
</sql:query>

 
4.        <sql:param value=””> 這個標籤用於設置SQL預處理語句中的參數,在SQL預處理語句中,使用“?”佔位符來表示它的參數。其中value表示指定的參數值,如果有多個參數,那麼參數的設定順序和佔位符的順序一致。這裏可以不使用value屬性而將值放在body中。例如:同上。
 

5.      <sql:transaction dataSource=”” isolation=”” > 這個標籤用於進行事務處理,它爲<sql :update>和<sql :query>建立事務處理的上下文,並且提供相同的數據源。dataSource也就是<sql :setDataSource>中指定的dataSource;isolationLevel屬性指定了事務隔離的級別,如果沒有指定的話,那麼將使用已配置的DataSource的事務隔離級別,隔離的級別包含read_committed、read_uncommitted、repeatable_read、serializable等。需要注意的是嵌套在它裏面的<sql :update>、<sql :query>標籤不能使用DataSource屬性來另外指定數據源。<sql :transaction>是數據庫事務處理的輕量級封裝,如果要處理複雜的或者是分佈式的數據庫事務,則不能使用。


7.  update標籤示例

<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>測試update標籤</title>
          </head>

<!-- 創建一個數據普通數據源 -->
<sql:setDataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
 user="liky" password="redhat"
 url="jdbc:sqlserver://localhost:1433;DatabaseName=csu" var="db" />

<!-- 使用query 標籤執行查詢 -->
<sql:query dataSource="${db}" var="users"
 sql="select * from bbs_user where id > ? " scope="page" startRow="10"
 maxRows="10">
 <sql:param>12</sql:param>
</sql:query>

<body>

<!-- 迭代結果集 -->
<c:catch var="sqle">
 <c:forEach var="row" items="${users.rows}">
  <c:out value="${row.id}" />
  <c:out value="${row.user_name}" />
  <c:out value="${row.user_pwd}" />
  <br>
 </c:forEach>
</c:catch>
<c:out value="${empty sqle}" />
</body>
</html>


8.      update標籤示例

<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>測試標籤</title>
</head>

<sql:setDataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
 user="liky" password="redhat"
 url="jdbc:sqlserver://localhost:1433;DatabaseName=csu" var="db" />

<body>

<!-- 這裏使用update標籤創建一個表 -->
<sql:transaction dataSource="${db}">
<sql:update var="update" scope="page">
 if exists(select 1 from sysobjects where name='tmp')
  drop table tmp
 
 create table tmp
 (
  id int identity(1,1) primary key,
  name varchar(20),
  pass varchar(20)
 )
</sql:update>
</sql:transaction>

<!-- 這裏使用update標籤修改表的結構,添加一個列 -->
<sql:transaction dataSource="${db}">
<sql:update var="update" scope="page">
 alter table tmp add age tinyint
</sql:update>
</sql:transaction>
<br>

</body>
</html>


9.     transaction和param標籤等的綜合示例

<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>測試update標籤用來更新和插入數據</title>
          </head>

<sql:setDataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
 user="liky" password="redhat"
 url="jdbc:sqlserver://localhost:1433;DatabaseName=csu" var="db" />

<body>

<!-- 這裏演示update標籤執行數據庫更新 -->
<sql:update dataSource="${db}"
 sql="update bbs_user set user_name=? where id=?" var="update"
 scope="page">
 <sql:param value="Zuzheng Li" />
 <sql:param value="15" />
</sql:update>
成功更新數據行:<c:out value="${update}" />
<br>

<!-- 這裏演示update標籤執行數據庫插入 -->
<!-- 這裏的forEach迭代只是起到一個for循環的作用 -->
<c:forEach begin="0" end="10">
<sql:transaction dataSource="${db}">
<sql:update var="isOk" scope="page"
   sql="insert into bbs_emp (name, pass) values (?,?)">
   <sql:param value="lucy" />
   <sql:param value="thanks" />
</sql:update>
</sql:transaction>
</c:forEach>

</body>
</html>

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章