1 / 25

機房使用資料庫注意事項 執行 JSP 程式三步驟 使用 JDBC 連結 MySQL 資料庫 SQL 語言 JSP 的資料庫基本存取 - 新增、刪除、更新 分頁顯示 SQL 查詢

大綱. 機房使用資料庫注意事項 執行 JSP 程式三步驟 使用 JDBC 連結 MySQL 資料庫 SQL 語言 JSP 的資料庫基本存取 - 新增、刪除、更新 分頁顯示 SQL 查詢 PreparedStatement 類別執行 SQL 指令. 機房使用資料庫注意事項. 步驟 1: 開啟虛擬 xp 步驟 2: 開啟 resin 步驟 3: 用 phpmyadmin 建立資料庫 登入資料庫 http://localhost/phpMyAdmin/ 使用者名稱: root 密碼: root. 執行 JSP 程式三步 驟.

keiji
Télécharger la présentation

機房使用資料庫注意事項 執行 JSP 程式三步驟 使用 JDBC 連結 MySQL 資料庫 SQL 語言 JSP 的資料庫基本存取 - 新增、刪除、更新 分頁顯示 SQL 查詢

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 大綱 • 機房使用資料庫注意事項 • 執行JSP程式三步驟 • 使用JDBC連結MySQL資料庫 • SQL語言 • JSP的資料庫基本存取-新增、刪除、更新 • 分頁顯示SQL查詢 • PreparedStatement類別執行SQL指令

  2. 機房使用資料庫注意事項 • 步驟1:開啟虛擬xp • 步驟2:開啟resin • 步驟3:用phpmyadmin建立資料庫 登入資料庫 http://localhost/phpMyAdmin/ 使用者名稱:root 密碼:root

  3. 執行JSP程式三步驟 • Windows作業系統的記事本就可以編輯JSP原始程式碼 • 在Windows XP請執行「開始/所有程式/附屬應用程式/記事本」指令啟動記事本,如下圖所示: STEP1: 存成檔名為1.jsp的檔案 <!-- JSP程式:1.jsp --> <html> <head> <title> 1.jsp </title> </head> <body> 測試JSP程式的執行.........<br> 1 + 1 = <%= 1+1 %> </body> </html> STEP2: 將1.jsp檔移至C:\resin-3.1.10\ resin-3.1.10\webapps\ROOT STEP3: 輸入網址:http://localhost:8080/1.jsp

  4. 使用JDBC連結MySQL資料庫 • 在安裝好MySQL的JDBC驅動程式後,JSP程式就可以使用JDBC建立資料庫連結,然後透過JDBC API執行SQL指令來存取資料庫的記錄資料。 • 4步驟: • 步驟1: JSP程式首先需要載入JDBC驅動程式 • 步驟2: 建立Connection連結物件 • 步驟3:建立JDBC的Statement物件 • 步驟4: 關閉Connection、Statement物件 • http://localhost:8080/ch6/ch6.jsp

  5. An Example-隨堂練習 <!-- JSP程式:Ch6.jsp --> <%@ page contentType="text/html; charset=MS950" import="java.sql.*"%> <html> <body> <h2>建立JDBC資料庫連結</h2><hr> <% Connection dbCon = null; // 宣告物件變數 Statement stmt = null; // 驅動程式參數 String sDriver = "com.mysql.jdbc.Driver"; String sCon = "jdbc:mysql://localhost:3306/school?user=root&password=123456"; try { Class.forName(sDriver); // 載入 JDBC driver dbCon = DriverManager.getConnection(sCon); // 建立資料連結 if ( dbCon != null ) out.print("建立資料來源連結成功!<br>"); stmt = dbCon.createStatement(); // 建立Statement物件 if ( stmt != null ) out.print("建立Statement物件成功!<br>"); stmt.close(); // 關閉Statement物件 dbCon.close(); // 關閉連結 }catch(SQLException e) { out.print(e); } %> </body> </html>

  6. SQL語言的基礎 • 「SQL」(Structured Query Language) • 公認的關聯式資料庫建立與資料之標準語言 • SQL指令語法可以用來查詢、新增、刪除和更新資料庫的記錄 • 目前Access、SQL Server、DB2、MySQL、MySQLMaxDB、Oracle和Sybase等資料庫管理系統都是以SQL語言作為標準的資料庫語言。

  7. SQL語言的基礎-3種類 • 資料定義語言(Data Definition Language,DLL) • 定義資料表名稱、屬性名稱、屬性資料型態…等。 • 資料操作語言(Data Manipulation Language,DML) • 資料的查詢(select)、新增(insert)、刪除(delete)和更新(update)指令。 • 資料控制語言(Data Control Language,DCL) • 屬於資料庫安全設定和權限管理的相關指令。

  8. Jsp網頁與sql語言 • 在Jsp網頁中,必須透過sql語言操作資料庫 • 利用statement物件,執行sql敍述,而連結資料庫取得資料 Jsp網頁 資料庫 SQL語言 Statement物件

  9. SQL語法說明所使用的符號 • 英文字母大寫:為SQL使用的保留字 • 「|」選擇符號:使用於某幾個語法 • { }大括號:「 { }」通常與「|」一起使用 • 「,」:分隔欄位項目 • 「…」省略符號

  10. SQL查詢指令 – SELECT(語法) • SQL的資料查詢指令只有一個SELECT指令,完整指令語法如下所示: SELECT 欄位1, 欄位2 FROM 資料表 WHERE conditions • 上述SELECT指令的欄位1~2為記錄的欄位,conditions是查詢條件,指令使用口語來說是「從資料表取回符合WHERE子句條件的記錄,顯示欄位1和2」。

  11. WHERE子句查詢條件4類 • 文字查詢條件 • 數字查詢條件 • 日期查詢條件 • 多重查詢條件

  12. SQL查詢指令 – SELECT • 「*」記錄欄位 • 在前述SQL語法的欄位1~2是取回的資料表欄位,我們可以使用"*"符號代表所有欄位,表示取回資料表記錄的所有欄位,如下所示: • 上述指令沒有WHERE子句,所以將資料表內所有的記錄和欄位取回。 SELECT * FROM students

  13. SQL查詢指令 – SELECT 文字查詢條件 • ‘文字欄位’要加上單引號, • 例如:’93001’,如下所示: • SELECT * FROM students WHERE stdno='93001'

  14. SQL查詢指令 – SELECT 文字查詢條件 • 使用【LIKE】查詢資料包含某字串 • LIKE+ 萬元字元 +已知部份條件 • 例如:學號包含’3’的子字串,如下所示: • SELECT * FROM students WHERE stdno LIKE '%3%'

  15. SQL查詢指令 • 建立Statement物件執行SQL指令 • String sSQL="SELECT * FROM students"; • boolean state = stmt.execute(sSQL); • 在使用Statement物件執行SQL指令後,接著可以使用getResultSet()方法取得ResultSet物件 ResultSetrs = stmt.getResultSet(); • 使用getMetaData()方法取得ResultSetMetaData物件 ResultSetMetaDatamd = rs.getMetaData();

  16. An Example (取得資料表的資訊) <% Connection dbCon = null; // 宣告物件變數 Statement stmt = null; // 驅動程式參數 String sDriver = "com.mysql.jdbc.Driver"; String sCon = "jdbc:mysql://localhost:3306/school?user=root&password=123456"; ResultSetrs = null; ResultSetMetaDatamd = null; try { Class.forName(sDriver); // 載入 JDBC driver dbCon = DriverManager.getConnection(sCon); // 建立資料連結 if ( dbCon != null ) out.print("建立資料來源連結成功!<br>"); stmt = dbCon.createStatement(); // 建立Statement物件 if ( stmt != null ) out.print("建立Statement物件成功!<br>"); //建立SQL指令 String sSQL = "Select * from student"; boolean state = stmt.execute(sSQL); if(state){ rs = stmt.getResultSet(); md = rs.getMetaData(); int count = md.getColumnCount(); out.print("資料欄位數:" + count); } stmt.close(); // 關閉Statement物件 dbCon.close(); // 關閉連結 }catch(SQLException e) { out.print(e);} %>

  17. SQL查詢指令 – SELECT • 數字、日期查詢條件 • 數值或日期欄位可以使用<>、>、<、>=和<=不等於、大於、小於、大於等於和小於等於等運算子建立多樣化的查詢條件。 • 數值欄位不需要額外字元括起, • 例如:總學分大於17,如下所示: • SELECT * FROM students WHERE totalcredit > 17

  18. SQL查詢指令 – SELECT 多重查詢條件 • WHERE子句的查詢條件可以使用AND和OR邏輯運算子連接,其基本語法,如下所示: • AND且運算子:連接的前後條件都必須成立,整個條件才成立。例如:學號包含"3"且姓名有"會"子字串,如下所示: • SELECT * FROM students WHERE stdno LIKE '%3%' AND name LIKE '%會%' • OR或運算子:連接的前後條件只需任何一個成立即可。例如:學號包含"6"或姓名有"會"子字串,如下所示: • SELECT * FROM students WHERE stdno LIKE '%6%' OR name LIKE '%會%'

  19. SQL查詢指令 – SELECT 排序輸出 • SQL的查詢結果可以指定欄位進行由小到大,或由大到小排序,只需在SELECT指令的最後加上ORDER BY子句即可,如下所示: • 上述查詢結果使用totalcredit欄位排序,預設是由小到大的ASC,如果想倒過來由大到小,只需加上DESC,如下所示: • SELECT * FROM students • WHERE totalcredit > 17 ORDER BY totalcreditDESC SELECT * FROM students WHERE totalcredit > 17 ORDER BY totalcredit

  20. JSP的資料庫基本存取-新增記錄 • SQL語言插入記錄指令INSERT可以新增一筆記錄到資料表,INSERT指令的語法格式,如下所示: • INSERT指令的注意事項,如下所示: • 不論欄位或值的清單,都需要使用逗號分隔。 • INSERT指令VALUES的值,數值不用單引號包圍,字元與日期/時間需要單引號包圍。 • INSERT指令的欄位名稱清單,並不需要和資料表定義的欄位數目或順序相同,只需選擇需要新增資料的欄位,但是括號內的欄位名稱順序需和VALUES值的順序相同。 INSERT INTO table (column1, column2,…..) VALUES ('value1', 'value2 ', …)

  21. An Example (新增記錄) String stud_id, name, address, phone, email; stud_id ="P112"; name = "會安"; phone = "0911147258"; address = "111111111"; email = "158@com.tw"; // 建立插入記錄的SQL指令 String sSQL = "INSERT INTO student (stud_id, name, phone, address, email) VALUES ('"+stud_id+"','"+name+"','"+phone+"','"+address+"','"+email+"')"; try { // 載入 JDBC driver Class.forName(sDriver); // 建立資料連結和Statement物件 dbCon = DriverManager.getConnection(sCon); stmt = dbCon.createStatement(); // 執行SQL指令插入記錄 stmt.executeUpdate(sSQL); out.print("成功插入記錄:" + stud_id+ "<br>"); stmt.close(); // 關閉Statement物件 dbCon.close(); // 關閉連結 } catch(SQLException e) { out.print(e); }

  22. JSP的資料庫基本存取-刪除記錄 • DELETE指令的語法格式,如下所示: DELETE FROM table WHERE conditions • table是資料表,conditions為刪除記錄的條件 口語來說是「將符合conditions條件的記錄刪除掉」 • DELETE指令的注意事項,如下所示: • WHERE子句是DELETE指令的必要元素,如果沒有WHERE子句,資料表內的所有記錄都會被刪除。

  23. An Example (刪除記錄) <% Connection dbCon = null; // 宣告物件變數 Statement stmt = null; // 驅動程式參數 String sDriver = "com.mysql.jdbc.Driver"; String sCon = "jdbc:mysql://localhost:3306/school?user=root&password=123456"; String stud_id; stud_id ="P112"; // 建立刪除記錄的SQL指令 String sSQL = "DELETE FROM student WHERE stud_id ='"; sSQL += stud_id + "'"; out.print("刪除記錄的SQL指令:" + sSQL + "<br>"); try { // 載入 JDBC driver Class.forName(sDriver); // 建立資料連結和Statement物件 dbCon = DriverManager.getConnection(sCon); stmt = dbCon.createStatement(); // 執行SQL指令刪除記錄 stmt.executeUpdate(sSQL); out.print("成功刪除記錄:" + stud_id + "<br>"); stmt.close(); // 關閉Statement物件 dbCon.close(); // 關閉連結 } catch(SQLException e) { out.print(e); } %>

  24. JSP的資料庫基本存取-更新記錄 • UPDATE更新記錄指令是將資料表內符合條件的記錄,都更新成指定的欄位值,如果更新欄位不只一個,請使用逗號分隔,語法如下所示: • UPDATE指令的注意事項,如下所示: • WHERE子句是必要元素,如果沒有WHERE子句,資料表內所有記錄欄位都會被更新。 • 更新欄位值是數值不用單引號包圍,字元與日期/時間需要單引號包圍。 UPDATE table SET column1 = 'value1' , column2 = 'value2' WHERE conditions

  25. An Example (更新記錄) <%@ page contentType="text/html;" import="java.sql.*"%> <body> <% Connection dbCon = null; // 宣告物件變數 Statement stmt = null; // 驅動程式參數 String sDriver = "com.mysql.jdbc.Driver"; String sCon = "jdbc:mysql://localhost:3306/school?user=root&password=123456"; String stud_id, name, address; stud_id ="P112"; name=“Lin"; address=“Taiwan"; // 建立更新記錄的SQL指令 String sSQL = "UPDATE student SET "; sSQL += "address='" + address + "', "; sSQL += "name='" + name+"'"; sSQL += " WHERE stud_id='" + stud_id + "'"; out.print("更新記錄的SQL指令:" + sSQL + "<br>"); try { // 載入 JDBC driver Class.forName(sDriver); // 建立資料連結和Statement物件 dbCon = DriverManager.getConnection(sCon); stmt = dbCon.createStatement(); stmt.executeUpdate(sSQL); // 執行SQL指令更新記錄 out.print("成功更新記錄:" + stud_id + "<br>"); stmt.close(); // 關閉Statement物件 dbCon.close(); // 關閉連結 } catch(SQLException e) { out.print(e); } %> </body>

More Related