2015年4月9日 星期四

(溫故知新) JDBC 連線練習

【JDBC 連線練習】

以下是運動中心的使用記錄

USE_RECORD (使用記錄)

USER_ID

(使用者編號)

USE_DATE_START

(使用開始日)

USE_TIME_START

(使用開始時間)

USE_DATE_END

(使用結束日)

USE_TIME_END

(使用結束時間)

USE_PLACE

(使用地方)

2013000005

20131102

130300

20131102

140000

1

2013000002

20131102

103000

20131102

162400

1

2013000002

20131102

182400

20131102

203000

1

2013000002

20131102

230130

20131103

033030

3

2013000003

20131101

090100

20131101

100600

1

2013000003

20131102

152000

20131102

202400

3

2013000003

20131102

100000

20131103

010000

2

2013000001

20131101

080500

20131101

121000

1

JSP 畫面

編號

使用開始日

使用開始時間

使用結束日

使用結束時間

使用地方

2013000001

20131101

080500

20131101

121000

第1區

2013/11/02 曾經在運動中心運動的有哪些人 ?

開發環境:

MySQL Workbench MySQL Server

Tomcat 7 AP server

開發工具:

IntelliJ IDEA 14

使用 JSTL 來簡化JSP

使用 Maven 來管理 library

使用 quickstart 的方式建立 webapp project

參照: http://www.tutorialspoint.com/jsp/jsp_database_access.htm

使用 MySQL 建立相關資料

-- MySQL 語法

CREATE TABLE IF NOT EXISTS `USE_RECORD` (
   `ID` int(11) NOT NULL AUTO_INCREMENT,
   `USER_ID` varchar(11) NOT NULL,
   `USE_DATE_START` varchar(10) NOT NULL,
   `USE_TIME_START` varchar(10) NOT NULL,
   `USE_DATE_END` varchar(10) NOT NULL,
   `USE_TIME_END` varchar(10) NOT NULL,
   `USE_PLACE` varchar(2) NOT NULL,
   PRIMARY KEY (`ID`)

) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;



INSERT INTO `USE_RECORD` (`USER_ID`, `USE_DATE_START`, `USE_TIME_START`,`USE_DATE_END`,`USE_TIME_END`,`USE_PLACE`)
VALUES

('2013000005', '20131102', '130300','20131102','140000','1'),

('2013000002', '20131102', '103000','20131102','162400','3'),

('2013000002', '20131102', '182400','20131102','203000','2'),

('2013000002', '20131102', '230130','20131103','033030','1'),

('2013000003', '20131101', '090100','20131101','100600','2'),

('2013000003', '20131102', '152000','20131102','202400','1'),

('2013000003', '20131102', '100000','20131103','010000','2'),

('2013000001', '20131101', '080500','20131101','121000','1');



SELECT * FROM `USE_RECORD`;



SELECT * FROM `USE_RECORD`

WHERE `USE_DATE_START` = '20131102';

Maven 的 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>JDBC_easy1</groupId>
<artifactId>exam</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>jdbc_easy1</name>
<url>http://maven.apache.org</url>
<dependencies>
<!--
引入 commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging-api</artifactId>
<version>1.1</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--
使用 jstl 用 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- servlet
用 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<!-- jsp
用 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<!--
引入 JDBC connector-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
</dependencies>
<build>
<finalName>JDBC_easy1</finalName>
</build>
</project>

Web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
          id="WebApp_ID" version="2.5">


     <display-name>Archetype Created Web Application</display-name>
     <welcome-file-list>
         <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>

</web-app>

主要頁面Index.jsp

<%@ page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

<html>

<head>JDBC easy1</head>

<!--
  Reference http://www.tutorialspoint.com/jsp/jsp_database_access.htm

-->

<body>



<sql:setDataSource var="mysql_ds" driver="com.mysql.jdbc.Driver"
                    url="jdbc:mysql://localhost:3306/test"
                    user="test" password="test" />



<sql:query var="result" dataSource="${mysql_ds}">
     SELECT * FROM `USE_RECORD`
     WHERE `USE_DATE_START` = '20131102';

</sql:query>



<table border="1" width="100%">
     <tr>
         <th>編號</th>
         <th>使用開始日</th>
         <th>使用開始時間</th>
         <th>使用結束日</th>
         <th>使用結束時間</th>
         <th>使用地方</th>
     </tr>
     <c:forEach var="row" items="${result.rows}">
         <tr>
             <td><c:out value="${row.USER_ID}" /></td>
             <td><c:out value="${row.USE_DATE_START}" /></td>
             <td><c:out value="${row.USE_TIME_START}" /></td>
             <td><c:out value="${row.USE_DATE_END}" /></td>
             <td><c:out value="${row.USE_TIME_END}" /></td>
             <td><c:out value="${row.USE_PLACE}" /></td>
         </tr>
     </c:forEach>

</table>

</body>

</html>

Jsp 中使用了 JSTL 的 sql 標籤 及 c 標籤

使用時記得在頁面開頭引用

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

好讓 jsp 認得該標籤,並於開頭加入

<%@ page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>

指定該jsp 檔案所使用的文字編碼

其中 <sql:setDataSource var="mysql_ds" driver="com.mysql.jdbc.Driver"
                    url="jdbc:mysql://localhost:3306/test"
                    user="test" password="test" />
用法

可參照:http://www.apekshit.com/t/204/JSTL-SQL-SetDataSource-Example

簡單說明標籤的四個屬性

1. driver Attribute: 指定 jdbc所使用 driver 如 com.mysql.jdbc.Driver

2. url Attribute: 指定 dataBase 的連線路徑

3. var Attribute:指定一個變數名稱給該設定好的 dataSource

4. user Attribute: 登入dataBase 的使用者帳號

5. password Attribute: 登入dataBase 的使用者密碼

其中 <sql:query var="result" dataSource="${mysql_ds}"> 用法

可參照:http://www.apekshit.com/t/205/JSTL-SQL-Query-Tag-Example

三種屬性

1. datasource Attribute: 之前所指定的 dataSource 變數名稱

2. sql Attribute: 指定要執行之 sql 語法

3. var Attribute: 指定該結果集的變數名稱

其中 <c:forEach var="row" items="${result.rows}">用法

可參照:http://www.apekshit.com/t/89/JSTL-forEach-Tag


程式原始碼下載:http://goo.gl/EHXQvp

1 則留言 :