jstl <sql:param>標籤

2019-10-16 22:12:26

<sql:param>標記用作為<sql:query><sql:update>標記巢狀操作(子標籤),為值的預留位置提供值。 如果提供了NULL值,則該值將為預留位置設定為SQL的NULL值。

屬性

<sql:param>標籤具有以下屬性 -

屬性 描述 必需 預設
value 要設定的引數的值 主體

範例

在這個範例中,我們從基礎概念和操作開始,在testdb資料庫中建立一個employees表,並在該表中建立幾個記錄,參考以下SQL語句:

DROP TABLE IF EXISTS `employees`;
CREATE TABLE `employees` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL DEFAULT '',
  `age` int(3) unsigned NOT NULL DEFAULT '0',
  `education` varchar(32) DEFAULT '' COMMENT '學歷',
  `address` varchar(254) DEFAULT NULL,
  `salary` float(8,2) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of employees
-- ----------------------------
INSERT INTO `employees` VALUES ('1', '李小春', '23', '其它', '海口市人民大道1800號', '8900.00');
INSERT INTO `employees` VALUES ('2', '張輝', '28', '本科', '廣州天河區珠村市場', '15800.98');
INSERT INTO `employees` VALUES ('3', '林賢弟', '29', '博士', '廣州白雲區龍塘村120號', '18990.99');
INSERT INTO `employees` VALUES ('4', '王小簡', '23', '本科', '海口人民大道1688號', '899.98');
INSERT INTO `employees` VALUES ('5', '蔡世傑', '27', '專科', '上海市寶山區聯楊路2211弄26號', '15800.00');
INSERT INTO `employees` VALUES ('6', '張承龍', '30', '本科', '上海市虹口區虯江路522號', '23000.00');
INSERT INTO `employees` VALUES ('7', '李林奕', '26', '本科', '上海市徐匯區漕寶路440號', '32600.00');
INSERT INTO `employees` VALUES ('8', '劉皓軒', '28', '研究生', '上海松江九亭立同商務廣場', '29000.00');
INSERT INTO `employees` VALUES ('9', '周佳豪', '36', '博士', '深圳市寶安區沙井街道辦107國道富達工業區B棟', '48000.00');
INSERT INTO `employees` VALUES ('10', '陳聰', '23', '本科', '福田區文蔚大廈19層', '9800.00');

現在建立一個使用sql:update來執行INSERT,UPDATEDELETE語句的JSP程式碼,檔案:sql_param.jsp 如下所示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<!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>sql:param標籤範例</title>
</head>
<body>
    <div style="margin: auto; width: 90%">
        <h2>sql:param標籤範例</h2>
        <sql:setDataSource var="connection" driver="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost/testdb?useSSL=false&characterEncoding=utf8"
            user="root" password="123456" />

        <!-- 執行更新語句 -->
        <c:set var="newname" value="李家誠2"/>
        <c:set var="empId" value="1"/>
        <sql:update dataSource="${connection}" var="count">
            UPDATE employees SET name=? WHERE id=?;
            <sql:param value = "${newname}" />
            <sql:param value = "${empId}" />
        </sql:update>

        <!-- 執行刪除語句 -->
        <c:set var="delId" value="5"/>
        <sql:update dataSource="${connection}" var="count2">
            DELETE FROM employees WHERE id>=?;
            <sql:param value = "${delId}" />
        </sql:update>

        <!-- 執行查詢語句 -->
        <sql:query dataSource="${connection}" var="result">
            SELECT * from employees;
         </sql:query>

        <table border="1" width="100%">
            <tr>
                <th>編號</th>
                <th>名字</th>
                <th>薪水</th>
                <th>地址</th>
            </tr>

            <c:forEach var="row" items="${result.rows}">
                <tr>
                    <td><c:out value="${row.id}" /></td>
                    <td><c:out value="${row.name}" /></td>
                    <td>¥<c:out value="${row.salary}" /></td>
                    <td><c:out value="${row.address}" /></td>
                </tr>
            </c:forEach>
        </table>
    </div>
</body>
</html>

注意:需要將MySQL的連線驅動程式:mysql-connector-java-5.1.40-bin.jar放入到{Webpp}/WEB-INFO/lib目錄下。

執行上述專案程式碼,得到以下結果如下 -