JAVA 2 Basic part 8

1.檔案處理補充教材
參考檔案在老師提供的 "0619_教材\2_檔案處理補充教材\CH07\" 裡面
a.資料夾與檔案的建立、刪除
參考檔案:File_Manage.java
b.資料夾與檔案的讀取 (dir)
參考檔案:File_Query.java
c.檔案內容的讀取 (以 byte 為單位來讀取,無法讀中文,因為一個中文字為二個 byte)
參考檔案:FileInOutEx.java
d.檔案內容的讀取 (以 char 為單位來讀取,一個字一個字的讀取)
參考檔案:FileReadWriteEx.java
e.檔案內容的讀取 (以"行" 為單位來讀取,一行一行的讀取)
參考檔案:BufferedReadWriteEx.java

2.練習一
題目:利用 TestFile示範 ptoject 中的 BufferReadBufferWrite 的作法,將通訊錄檔案中的 name、seatnum、email 讀出來,並存到以 class contant 所宣告的物件陣列中。
例如:
Contant [ ] cont = new Contant [ N ]  //N是資料筆數
for (Contact c : cont) {
     c = new Contant ( name, seatnum, email);  // 資料初始化
//然後可以再批次執行 show( ) 等方法
參考檔案在老師提供的 "0619_練習\ReadContactV3" 資料夾

3.加入檔案視之為參數
目的:讓程式在執行前載入指定的檔案,將檔案裡的資料視為參數,使程式執行。之前我們是使用在程式裡面直接輸入資料當參數。這裡是以匯入檔案的方式為練習。
a.專案名稱按右鍵 --> Run as  --> Run Configurations
b.選擇 Argument 頁籤 --> 輸入檔名 (這裡是 "test1.txt" ,該檔案必須與 scr 同一層,或是在程式裡指定參數檔案"test1.txt"所在位置的路徑。)


4.安裝JDBC工具
a.執行Java1.7版

b.執行 Java 的 derbyrun.jar 來啟動 derby 資料庫服務

c.在DOS下執行指令。
PS:不可關閉視窗,因為要維持1527 port 一直是 listen 狀態。(後面的"進階看這裡"有更詳細的解釋)

d.掛載 jar 套件,在 eclipse 選一專案按右鍵 --> 內容 --> 選 "Java Build Path" --> 選Libraries 頁籤  -->點選 "Add External JARs"。
PS:此目的是讓 eclipse 匯入跟JDBC相關的函式庫 ( Libraries),這樣才能建立資料庫連線、建立資料表等。

e.在Java1.7 版目錄下"C:\Program Files\Java\jdk1.7.0_04\db\lib" 選下面二個 jar 檔案。

f.就會在專案下面的 Refernced Libraries 看到二個 jar 已經掛起來。
PS:這樣就代表掛載函示庫成功。

g.在程式內建立連線,將資料庫路徑指向本機,埠號為1527。將 useranme & password 暫時設為 null。


5.練習二
將 sample1 修改如下
1.車子資料表 --> 通訊錄
2.編號  --> 座號
3.名稱  --> 電郵
4.在 "CREATE TABLE ( )" 的參數內新增一個參數欄位:姓名 varchar(20)
5.新增二筆通訊錄資料



6.課後自行註解
下圖是今天做的練習 sample1。關於 JDBC 語法分為三部分。
第一部分可只執行一次。
若使用第二部分,就不要用第三部分,二者取其一。意思是說,要嘛一、二搭,不然就一、三配。以下說明原因。

第一部分
第9行
是使用 class.forName 方法來載入JAVA 客戶端驅動程式 ( client driver)(後面的"進階看這裡"有更詳細的解釋)
連接不同資料庫,要用不同的字串。
a.連接 apache 的 derby資料庫 的 JDBC 語法 
Class.forName("org.apache.derby.jdbc.ClientDriver");

b.連接 Microsoft 的 SQL 2000 資料庫的 JDBC 語法:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

c.連接 
Microsoft  SQL 2005 資料庫
的 JDBC 語法 
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

d.連接  MySQL 資料庫 的 JDBC 語法 
Class.forName("com.mysql.jdbc.Driver");


第二部分
第11行
是建立一個通訊協定,將它放入字串 ( protocol )。目的就是要讓程式透過通訊協定連線資料庫。字串裡的 //localhost:1527 是指本機電腦的 1527 port。
另外補充:Microsoft SQL 是用 1433 port。
第12行
建立連線,呼叫 Connection 類別,命名為 cn,呼叫 DriverManager.getConnection ( ),裡面帶幾個參數。
參數一:連線的 protocol,加上要建立的資料庫名稱 (carDB ),"create = true"的意思是要建立資料庫。
參數二:user name。
參數三: password。
這裡參數二、參數三用 null 帶過,意思是匿名存取。

第三部分
第15行,相當於第二部分第11行。
16,17行,宣告二個變數 usr (就是 user name 的意思),以及 pw (就是 password 的意思),並將此二變數用""來代表設為空值。
第20行,相當於第二部分第12行。


7.進階看這裡
1.客戶端驅動程式 ( client driver)
其實就是一種服務 (service),電腦本身就提供許多服務,例如之前學過的 DHCP、DNS、SMTP 等等。資料庫是一種提供儲存資料的空間,它也是藉由服務來讓我們存取。

前面我們在DOS模式下執行了 "java -jar derbyrun.jar server start",目的就是開啟 derby 資料庫服務。然而不能關掉視窗,就是因為服務也就跟著停止了。因為 derby 不是 Microsoft 自家的產品,所以目前只能以這種方式開著,在視窗上不方便。例如 Microsoft 自家的產品 MS SQL 2000, 2005, 2008 安裝好之後,都會將服務內嵌到管理介面,只需要啟動就可以,不需要在畫面上一直開著 DOS介面。

例如在第11行的 protocol,就是指服務的通道。
DHCP        67/68
DNS          53
SMTP        25
HTTP         80
HTTPS       443
MS SQL    1433
Derby         1527

2. Derby JDBC 提供二種模式給 Java 連接資料庫,我們用第二種
Derby JDBC driver has two driver classes for Java DB (Derby) running in two different modes:

1. Embedded Driver Class, org.apache.derby.jdbc.EmbeddedDriver - Used to create connections to Java DB (Derby) running in embedded mode. The JAR file and the connection URL format for the embedded driver class are listed below:
Class Name: org.apache.derby.jdbc.EmbeddedDriver

2. Client Driver Class, org.apache.derby.jdbc.ClientDriver - Used to create connections to Java DB (Derby) running in Network Server mode. The JAR file and the connection URL format for the client driver class are listed below:
Class Name: org.apache.derby.jdbc.ClientDriver


No comments: