初次建立JSP資料庫連線

git 網站下載的sqlite-jdbc-x.x.x.jar複製到WEB-INF目錄下的lib資料夾。這個過程在「初次建立JSP網頁程式 」已經做過整理,為了確定得專案中有導入資料庫驅動程式「JDBC」請在eclipse專案資料夾的「Libraries」下檢查是否有「sqlite-jdbc-x.x.x.jar」的罐子圖示。在為數不多的嵌入式資料庫中選擇 SQLite 是為了克服無法預期的教室網路環境。若不幸在網路封閉的教室中,嵌入式資料庫是唯一能使用的教具。

嵌入式資料庫是整合在用戶端電腦的檔案系統,通常不提供網路存取的資料庫引擎。當應用程式處理巨量本機資料、或是資料庫只會在單機上使用的極端情況下有明顯優勢。 主要是因為不用特別建立一個複雜的資料庫系統,就可以使用SQL結構化的資料存取特性。

網頁應用程式就是讓網頁能呈現動態資料,資料庫通常是不可或缺的工具。資料庫導入過程中,通常也能讓初學者能逐漸熟練網頁程式碼的設計。


取得資料庫的的管理權

在開始進行資料庫存取之前,必須能確保資料庫的可用性。使用資料庫管理系統驗證資料庫的可用性,通常是建立各種資料庫應用的必要過程。資料庫管理系統是資料庫不可缺的顆伴,每個資料庫廠商都有提供原廠的資料庫管理系統。DB Browser 是對於 SQLite 的一款免費軟體,能以視窗環境瀏覽資料而解決以純文字的管理的難題。請下載後解壓並將「DB Browser for SQLite」資料夾整個複製到隨身碟中。



建議DB Browser放在簡單路徑。
如: F:\tools\DB Browser for SQLite


開啟DB Browser

點選資料夾中的「DB Browser for SQLite.exe」開啟資料庫管理工具,工具介面為多國語言可以用中文顯示。



可以下載建立好的資料庫,或是選擇自己創建資料庫。
要注意資料庫檔案「my.db」要放在不容易混淆的資料夾路徑。建議放在簡單路徑。
如: F:\my.db ,後續的練習都可以重複使用。


「counter」資料表只有「id、total」2個欄位,將用來做為某個項「id」指標的累計「total」數字。

在網頁上導入資料庫

在專案中的「WebContent」資料夾上點選右鍵建立名為index.jap的檔案,也可以利用file的New → JSP File,名為index的檔案通常會被視為歡迎頁面。要注意jsp檔案必須放在「WebContent」資料夾中,才會被伺服器編譯成動態網頁傳遞到使用者端的瀏覽器。
<%@ page language="java" contentType="text/html; charset=BIG5" pageEncoding="BIG5"%>
<%@ page import="java.sql.*"%>
<%@ page import="org.sqlite.*"%>

JSP的HTML內容裡面「小於+百分比」符號及「大於+百分比」範圍內可以建立Java程式,效果與普通Java程式幾乎一樣。 為了讓伺服器知道這是JSP,必須在頁面最頂端做出language="java"的標記,而import則是導入的套件。

標準的資料庫做連線必須提供「伺服器位址」、「帳號」、「密碼」等的組合稱做「連線字串」,當中每個句子的是有科學函意的。但是單機版的資料庫如「SQLite」因為沒有這些網路特性就顯得簡單許多。
<%
SQLiteConfig cfg = new SQLiteConfig(); //連線設定
SQLiteDataSource ds = new SQLiteDataSource(cfg); //連線工具
ds.setUrl("jdbc:sqlite:F:\\my.db"); \\資料庫的檔案位置

String sql; //重複使用的SQL語法容器
Statement stat; //資料庫連線工具

stat = ds.getConnection().createStatement(); //資料庫連線開始

//記數器累加語法
sql = "UPDATE counter SET total=total+1 WHERE id IS NULL";
stat.executeUpdate(sql); //執行

//資料查詢語法
sql="select * from counter WHERE id IS NULL";
ResultSet rs = stat.executeQuery(sql); //建立容器裝入查詢結果
%>


小於大於標記可以在網頁的任何位置添加,但要注意JSP只能用直譯式的工作。如同PHP、ASP等其他網頁應用程式一樣「變數宣告的行數後面才能使用」。

網頁的內容與HTML相同,只要有程式碼區塊包圍的地方就會執行「會更新的」內容。
<body>
<% 
while (rs.next()){%>  
次數: <%=rs.getString("total")
%>
</body>

最後,千萬不能忘記結束資料庫連線。這點非常重要,過多的連線最終將導致資料庫當機。
<%
rs.close(); //關閉連線
conn.close(); 
%>

輕鬆的完成了

本篇的完整內容
<%@ page language="java" contentType="text/html; charset=BIG5" pageEncoding="BIG5"%>
<%@ page import="java.sql.*"%>
<%@ page import="org.sqlite.*"%>
<%
SQLiteConfig cfg = new SQLiteConfig(); 
SQLiteDataSource ds = new SQLiteDataSource(cfg); 
ds.setUrl("jdbc:sqlite:F:\\my.db");

String sql;
Statement stat;
stat = ds.getConnection().createStatement();

//sql = "CREATE TABLE IF NOT EXISTS counter (id string, total integer, PRIMARY KEY(id));";
//stat.executeUpdate(sql);

sql = "UPDATE counter SET total=total+1 WHERE id IS NULL";
stat.executeUpdate(sql);

sql="select * from counter WHERE id IS NULL";
ResultSet rs = stat.executeQuery(sql);
%>




Insert title here


<%while(rs.next()){%>  
次數: <%=rs.getString("total")%>

<%}
rs.close();
stat.close(); %>

啟動伺服器後,在瀏器上輸入 http://127.0.0.1:8080/josp/index.jsp 就可以檢視JSP的運行結果。


任何技術從瞭解原理開始,都能透過不斷實做和學習從基礎到掌握。
一般人可以輕易掌握的技術,代表著工作隨時可以取代。
艱澀的學習過程得來的技術,代表著無可取代和高含金量。
如何把艱澀的學習變為輕鬆簡單的探索與發現,成為專業科目教師的難題。

沒有留言:

張貼留言