import java.sql.*;
public class Test {
public static void main ( String[] args ){
try {
//以下紅色為建立連線
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\\MyExcelDB.xls;DriverID=22;READONLY=false";
Connection con = DriverManager.getConnection(url,"","");
Statement stmt = con.createStatement();
String strSQL = "SELECT * FROM [Sheet1$]";
ResultSet rs = stmt.executeQuery(strSQL);
while ( rs.next() ){
/*
System.out.println( rs.getInt(1) );
System.out.println( rs.getString(2) );
System.out.println( rs.getFloat(3) );
*/
System.out.println( rs.getInt("p_no") );
System.out.println( rs.getFloat("price") );
System.out.println( rs.getString("p_name") );
}
rs.close(); //關閉連線
//插入一筆資料
stmt.execute("INSERT INTO [Sheet1$] values (88, 'car', 1000000)");
stmt.close();
con.close();
} catch ( Exception e ){
System.out.println(e);
}
}
}
2.用 Java存取 MySQL 的資料
a.下載 mysql-connector-java-5.1.21
b. 將之解壓縮後,再將裡面的 mysql-connector-java-5.1.21-bin.jar 複製到 C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib 裡面。之後就可以用裡面的一些 class for Driver
範例:
index.jsp
<%@ page import="java.sql.*" contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>SELECT 語法練習</title>
</head>
<body>
SQL SELECT 語法練習
<a href='../'>回上一頁</a>
<hr>
<%
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/company?user=root&password=apple&charset=utf8";
Connection con = DriverManager.getConnection(url);
Statement stmt = con.createStatement();
String strSQL = "SELECT * FROM employee";
ResultSet rs = stmt.executeQuery(strSQL);
while ( rs.next() ){
out.println( rs.getString("ID") + ", " + rs.getString("c_name") + ", " + rs.getString("e_name") + ", " + rs.getString("department") + ", " + rs.getString("position"));
out.println("</br>");
}
stmt.close();
con.close();
%>
</body>
</html>
結果:
3.用資料庫 (MySQL)的方式來驗證帳號密碼
PS:可參照 20120711 J2EE 程式設計九 的 "3.用檔案的方式來驗證帳號密碼"
a.複製資料夾 "login_session_io",重新命名為 "login_session_mysql"。
b.因為已經不需要,只需將裡面的帳號密碼,輸入到資料庫即可。所以可以刪除。
c.修改
check.jsp
<%@ page contentType="text/html; charset=UTF-8" import="java.sql.*" //需要匯入java.sql.* %>
<%
String act = request.getParameter("act");
String pwd = request.getParameter("pwd");
//將之前從檔案抓帳號密碼的方式,改由從資料庫抓帳號密碼
Class.forName("com.mysql.jdbc.Driver"); //告訴 JSP 要用這個 class
//告訴 JSP 資料庫的路徑及存取資料庫的帳密
String url = "jdbc:mysql://localhost:3306/company?user=root&password=apple&charset=utf8";
//建立資料庫連線
Connection con = DriverManager.getConnection(url);
//宣告字串變數 stmt 來放 SQL 語法
Statement stmt = con.createStatement();
// SQL 語法為...。因為 e_name = '' 要用單引號來包 act,所以雙引號要在外面
String strSQL = "SELECT * FROM employee where e_name = '" + act + "'";
// 將取得的資料放到 ResultSet (就是放在記憶體裡面)
ResultSet rs = stmt.executeQuery(strSQL);
//判斷帳密是否正確
if (
pwd != null //輸入的 pwd 不是null
&& rs.next() //resultSet 還有下一行可讀 (第一行有資料)
&& rs.getString("pwd") != null // resultSet 中的 pwd 欄位不是null
&& pwd.equals(rs.getString("pwd")) //輸入的 pwd 的值,等於 resultSet 中 pwd 欄位的值
){
session.setAttribute("uid",act); //驗證正確就將 session 給他
response.sendRedirect("wellcome.jsp"); //導到 wellcome.jsp
} else {
response.sendRedirect("error.html"); //驗證錯誤就導到 erroe.jsp
} //if
stmt.close();
con.close();
%>
結果:
PS:若要在歡迎畫面( wellcome.jsp) 秀出中文名需要修改2個地方
1.在 check.jsp 加入一行
session.setAttribute("c_name",rs.getString("c_name"));
check.jsp 完整版
<%@ page contentType="text/html; charset=UTF-8" import="java.sql.*" %>
<%
String act = request.getParameter("act");
String pwd = request.getParameter("pwd");
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/company?user=root&password=apple&charset=utf8";
Connection con = DriverManager.getConnection(url);
Statement stmt = con.createStatement();
String strSQL = "SELECT * FROM employee where e_name = '" + act + "'";
ResultSet rs = stmt.executeQuery(strSQL);
if (
pwd != null
&& rs.next()
&& rs.getString("pwd") != null
&& pwd.equals(rs.getString("pwd"))
){
session.setAttribute("uid",act);
//加入這一行,多設定一個 session 變數 c_name,將它指向 resultSet 的 c_name 欄位
session.setAttribute("c_name",rs.getString("c_name"));
response.sendRedirect("wellcome.jsp");
} else {
response.sendRedirect("error.html");
}
stmt.close();
con.close();
%>
2.在 wellcome.jsp 修改
wellcome.jsp 修改版
<%
if (session.getAttribute("uid") == null){
response.sendRedirect("error.html");
}
%>
// 原本是 session.getAttribute("uid"),改成 session.getAttribute("c_name")
<%= session.getAttribute("c_name")%> 你好!歡迎光臨</br></br>
<a href='./logout.jsp'>登出</a><br>
<form name='logout' method='post' action='logout.jsp'>
<input type='submit' value='登出'>
</form>
結果:
No comments:
Post a Comment