2015年4月10日 星期五

(溫故知新) JDBC 連線練習 normal

【JDBC 連線練習 normal】

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

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 曾經在運動中心運動的有哪些人 ? 改為使用 java.sql.PreparedStatement,並且對於傳入SQL的參數使用”?”

開發環境:

MySQL Workbench MySQL Server

Tomcat 7

開發工具:

IntelliJ IDEA 14

使用 JSTL 來簡化JSP

使用 Maven 來管理 library

使用 quickstart 的方式建立 webapp project

使用 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_normal_1</groupId>
<artifactId>exam</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>JDBC_normal_1</</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_normal_1</</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 import="java.sql.Connection" %>

<%@ page import="java.sql.DriverManager" %>

<%@ page import="java.sql.PreparedStatement" %>

<%@ page import="java.sql.ResultSet" %>

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

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

<%
    
Connection conn = null;
     PreparedStatement ps = null;
     ResultSet rs = null;
     try{
         Class.forName("com.mysql.jdbc.Driver");
         conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","test","test");
         StringBuffer sb = new StringBuffer();
         sb.append("SELECT * FROM USE_RECORD ");
         sb.append("WHERE USE_DATE_START = ? ");
         ps = conn.prepareStatement(sb.toString());
         ps.setString(1,"20131102");
         rs = ps.executeQuery();


     }catch(Exception ex){
         ex.printStackTrace();
     }

%>

<html>

<head>
     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>

</head>

<body>

<h2>JDBC_normal_1</h2>



<% if(null != rs){ 
%>

<table border="1" width="100%">
     <tr>
         <th>編號</th>
         <th>使用開始日</th>
         <th>使用開始時間</th>
         <th>使用結束日</th>
         <th>使用結束時間</th>
         <th>使用地方</th>
     </tr>
     <% while (rs.next()){
%>
    
<tr>
         <td><%=rs.getString("USER_ID") %></td>
         <td><%=rs.getString("USE_DATE_START") %></td>
         <td><%=rs.getString("USE_TIME_START") %></td>
         <td><%=rs.getString("USE_DATE_END") %></td>
         <td><%=rs.getString("USE_TIME_END") %></td>
         <td>第 <%=rs.getString("USE_PLACE") %> 區</td>
     </tr>
     <% }
%>

</table>

<% }else{
%>
    
<h2>查無資料</h2>

<% }
     if(null != ps){
         ps.close();
     }
     if(null != conn){
         conn = null;
     }

%>





</body>

</html>

於開頭加入

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

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

在jsp當中引入四個準備的用的類別

<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>

並於程式中使用下列程式段載入 mysql 的 jdbc driver

Class.forName("com.mysql.jdbc.Driver");

接著使用

DriverManager.getConnection("jdbc:mysql://localhost:3306/test","test","test");

來建立 Connection

StringBuffer sb = new StringBuffer();

sb.append("SELECT * FROM USE_RECORD ");

sb.append("WHERE USE_DATE_START = ? ");

ps = conn.prepareStatement(sb.toString());

ps.setString(1,"20131102");

rs = ps.executeQuery();

整個程式由上列程式碼完成對資料庫的資料查詢

最後使用

<% while (rs.next()){ %>

<tr>
     <td><%=rs.getString("USER_ID") %></td>
     <td><%=rs.getString("USE_DATE_START") %></td>
     <td><%=rs.getString("USE_TIME_START") %></td>
     <td><%=rs.getString("USE_DATE_END") %></td>
     <td><%=rs.getString("USE_TIME_END") %></td>
     <td>第 <%=rs.getString("USE_PLACE") %> 區</td>

</tr>

<% } %>

將相關資訊列印出來

 

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

沒有留言 :

張貼留言