六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

應用Java技術完成數據庫應用系統

[摘要][內容提要] 本文詳細介紹了Java數據庫編程的JDBC API及java.sql包。并以 Java 技術設計、開發、實踐的一個數據庫應用管理系統案例為模板,結合 Java2 平臺程序進行說明 Ja...
[內容提要] 本文詳細介紹了Java數據庫編程的JDBC API及java.sql包。并以 Java 技術設計、開發、實踐的一個數據庫應用管理系統案例為模板,結合 Java2 平臺程序進行說明 Java 面向對象的語言的開發思路、語言特色、安全機制以及案例的具體實現步驟、方法及過程等。相信通過本文的介紹,廣大的開發者會領略 Java 面向對象語言的風采,深深體會 Java 的開發思想。從而為廣大用戶提供另外一種高效的、前瞻性的管理信息系統及Live Intranet解決方案。

[關鍵詞] OOP NC JDBC APPLET APPLICATION MIS Live Intranet

Java 語言是Sun MicroSystems 公司于1995年正式命名并推出的一種面向對象的編程語言-OOP(abbr.Object Oriented Programming)。Sun 公司說:Java 程序設計語言被設計成是 by programmers for programmers,其隨著 Internet 的發展而廣為流行。用它開發的系統“一次開發,到處運行”的特色以及程序開發設計時所體現出的面向對象的思想深深地觸動著人們。它的語言簡潔、集多種程序設計語言之大成,且面向對象、具有可移植性、分布性、安全性、高性能等特色。Java在向Internet/Intranet,甚至計算機世界的各個領域滲透,慢慢改變著人們的思維。而今Internet 熱浪一浪高過一浪,從外部世界走向企業內部形成Intranet,促進了Java 技術的利用開發。計算機業界中的IBM、ORACAL 、APPLE、Sun、Netscape五家公司還聯合推出“網絡計算機(NC-1)”規范。拋開“Wintel”臃腫不堪的體系結構,使用戶端價格低廉、易于使用,并成為能夠連接網絡的簡單計算機-NC(Network Computer),即所說的“瘦客戶”機,NC 支持Java 虛擬機(JVM),能夠運行Java開發的應用程序(Application)和小程序(Applet)并支持多媒體應用。NC 和Java 的結合誕生了新的時代:網絡計算機時代。就連Sun的冤家對頭Microsoft的比爾.蓋茨也不得不承認:“Java是長時間以來最卓越的程序設計語言”。

一、 Java 數據庫基礎 JDBC API

Java語言在數據庫應用方面,特別在基于Web 的B/S結構的在線數據庫應用方面的煩瑣復雜配置等,并不能使用戶和程序開發雙方都十分滿意。SunSoft雖提供了用Java語言編寫成的Java與數據庫的接口規范JDBC(Java DataBase Connectivity,而JavaSoft說JDBC并不代表什么),使Java程序可以通過統一標準規范的JDBC API來與不同的數據庫通信。確保了“100%純Java”的解決方案。JDBC API 定義了Java中的類和接口,表示數據庫連接、SQL 指令、結果集合等。它允許Java程序員發送SQL 指令并處理結果。JDBC API 提供兩種主要接口:一是面向開發人員的java.sql程序包,使得Java程序員能夠進行數據庫連接,執行SQL查詢,并得到結果集合。Java2 的java.sql包提供了6個類和18個接口,下文將介紹;另一是面向底層數據庫廠商的JDBC Drivers ,目前為止,Java2的JDBC Drivers僅提供下述四種類型的數據庫驅動方式,且各有利弊:
(1) JDBC-ODBC bridge plus ODBC driver 方式:JDBC-ODBC 橋接方式利用微軟的開放數據庫互連接口(ODBC API)同數據庫服務器通訊,客戶端計算機首先應該安裝并配置ODBC driver 和JDBC-ODBC bridge兩種驅動程序。這是Applets訪問你的數據庫最可能的解決方式,但這對Internet 和Intranet 用戶而言簡直是一個非常令人討厭和麻煩的解決方案。
(2) Native-API partly Java driver方式:這種驅動方式將數據庫廠商的特殊協議轉換成Java代碼及二進制類碼,使Java 數據庫客戶方與數據庫服務器方通信。例如:Oracle用SQLNet協議,DB2用IBM 的數據庫協議。數據庫廠商的特殊協議也應該被安裝在客戶機上。這也是令人討厭和麻煩的解決方案。
(3) JDBC-Net pure Java driver方式:這種方式是純Java driver。數據庫客戶以標準網絡協議(如HTTP、SHTTP)同數據庫訪問服務器通信,數據庫訪問服務器然后翻譯標準網絡協議成為數據庫廠商的專有特殊數據庫訪問協議(也可能用到ODBC driver)與數據庫通信。對Internet 和Intranet 用戶而言這是一個理想的解決方案。Java driver 被自動的,以透明的方式隨Applets自Web服務器而下載并安裝在用戶的計算機上。
(4) Native-protocol pure Java driver方式:這種方式也是純Java driver。數據庫廠商提供了特殊的JDBC協議使Java數據庫客戶與數據庫服務器通信。然而,將把代理協議同數據庫服務器通信改用數據庫廠商的特殊JDBC driver。這對Intranet 應用是高效的,可是數據庫廠商的協議可能不被防火墻支持,缺乏防火墻支持在Internet 應用中會存在潛在的安全隱患。
綜上四種方式中,只有第三、四種方式的驅動支持 Applet的零安裝。因為JDBC drivers 完全用Java 寫成,并從Web 服務器上隨applet下載。為了支持零安裝,驅動程序應該被放在Web上,并與applet 在相同目錄。而第四種存在安全隱患,第三種產品為數不多,現今較成熟的IDS JDBC driver屬于此種(http://www.idssoftware.com),但也要用到ODBC driver輔助。
即便如此,利用Java技術開發單機環境應用程序,局域網范圍或Intranet環境下的應用程序、動態Web應用(Live Intranet)等,Java語言是高效、安全、穩定的。Java語言已贏得了眾多廠商的支持,基于其上的Java API-JDBC也發展迅速。Sun承諾任何Java Applet 或Java應用軟件都能夠與數據庫結合,并且仍將不遺余力的支持未來Java技術的發展。Java語言的跨平臺特性,使之成為Internet和Intranet環境下開發數據庫應用系統的理想選擇方案。

二、 Java 數據庫應用系統的實現

基于此,筆者用Java 2 SDK,Standard Edition Version 1.2.1版本為開發工具,以已經成功開發的Java數據庫應用系統案例為模板,結合Java2程序語句及java.sql包,介紹一下Java數據庫應用系統開發的具體實現步驟、方法等。

1.設置數據庫的連接
為了利用JDBC,你將需要一個數據庫服務器和一個數據庫驅動器。因為大多數讀者的計算機已經安裝了Windows95/98,我就用微軟的 Access 97做為我的數據庫服務器(具體為Action.mdb),當然你也可以用其它的數據庫作為數據庫服務器。因為對JDBC而言,數據庫服務器的類型無關緊要,JDBC會提供一個獨立于數據庫服務器的訪問數據庫的方法。這是JDBC的主要優勢所在。
你將還需要一個數據庫驅動器,用來提供JDBC與你的數據庫的連接。作者選用了較可能的JDBC-ODBC bridge 方式。為此需設置32-bit ODBC的數據源,選擇System DSN(數據可被多用戶訪問,User DSN不同),增加新的數據源,配置新數據源的路徑為Action.mdb數據庫服務器的所在位置。
安裝完成,Java程序員可以進行編制程序的階段。首先程序員引用java.sql 包中相應的類與接口來進行對JDBC驅動器的管理:用Class 類中的 forName() 方法裝入 JDBC驅動器,以JDBC-ODBC bridge 方式為例,裝入JDBC驅動執行的語句為Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);用DriverManager 類中getDrivers()方法返回所有安裝在你的計算機中的JDBC驅動器,getConnection()建立與數據庫的連接等。getConnection()方法提供下面三種形式:
getConnection(String url)
getConnection(String url,String userID,String password)
getConnection(String url,Properties arguments)
其中字符串url表示數據庫服務器所在處的特殊的URL。URL是被用來與不同的數據庫驅動建立連接的統一網絡資源,其形式如下:
jdbc:subprotocol:subname
所有的JDBC數據庫協議開始于jdbc:。Subprotocol是被用來辨別JDBC驅動方式的。例如:JDBC-ODBC bridge 用jdbc:odbc:subname 這種用戶協議形式,IDS JDBC driver 用jdbc:ids:subname 形式。數據庫協議的subname標識數據庫并且與subprotocol 和JDBC驅動方式有關。例如,以JDBC-ODBC bridge方式,我用下面的URL形式建立與數據源Tend建立連接:
jdbc:odbc:tend
getDrivers()和getConnection()方法是DriverManager類中最重要的方法,還有其它一些方法在此略。

2.與數據庫進行連接
用DriverManager類的getConnection() 方法建立起與數據庫連接,getConnection()返回一個對象,此對象是java.sql包中的Connection 接口對象。該接口定義了與之連接的數據庫交互的一些方法、常量等,這些方法用來管理數據庫的連接、獲得連接的信息、提交數據庫處理事件并且預處理可執行的SQL語句。下面是Connection 接口的一些重要的方法:
close()-關閉一個數據庫連接
getMetaData()-返回一個DatabaseMetaData 接口對象,該接口能被用來獲得有關數據庫的詳細信息,包括數據庫結構和數據庫內容等。
createStatement()-創建一個SQL語句對象。
prepareStatement()-用SQL字符串創建一個SQL 預處理語句對象。預處理語句對象是可以被高效執行的預編譯過的SQL語句。
下面提供一段程序,實現了JDBC的驅動及數據庫的連接,供參考:
import java.sql.*;
import java.util.*;
class ConnectApp {
public static void main(String args[]) {
try{
// Load the JDBC-ODBC bridge driver方式
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:tend";
// 連接到數據庫
Connection connection=DriverManager.getConnection(url);
// 得到數據庫的信息
DatabaseMetaData meta=connection.getMetaData();

3.利用結果集工作
數據庫查詢被執行后,查詢的結果作為一個兩維(行、列)數據表返回。ResultSet接口被用來提供訪問查詢結果的數據表,查詢結果被當作ResultSet對象而返回,ResultSet對象提供“指針”,指針每次訪問數據庫表的一行。當ResultSet對象從查詢中返回時,指針初始指向數據表的第一行,ResultSet 的next() 方法用來移動指針到數據表的下一行,如果到達表尾,next() 方法返回假的布爾值-false,否則為真。ResultSet接口提供大量的獲得數據的方法,這些方法返回數據表中任意位置的數據,不論是基本數據類型或引用數據類型的數據。getMetaData()方法返回ResultSetMetaData接口對象,該對象包含數據表行的信息。ResultSetMetaData 接口提供變量和從ResultSet對象獲取信息的方法,getColumnCount() 方法返回數據表的列數,getColumnName() 方法返回提取的數據庫中的列名稱,即數據庫字段名,getColumnType() 方法返回列的SQL類型,ResultMetaData中其它的方法被用訪問列的額外屬性,如列的顯示寬度、數據格式及讀/寫狀態等。注意ResultSet中的列其始索引號為1而不是0。下面提供一段程序:
static void displayResults(ResultSet r) throws SQLException {
// 獲得數據結果集合
ResultSetMetaData rmeta = r.getMetaData();
// 確定數據集的列數,亦字段數
int numColumns=rmeta.getColumnCount();
// 輸出每一個數據值
for(int i=1;i<=numColumns;++i) {
if(i<numColumns)
System.out.print(rmeta.getColumnName(i)+" ");
else
System.out.println(rmeta.getColumnName(i));
}
while(r.next()){
for(int i=1;i<=numColumns;++i) {
if(i<numColumns)
System.out.print(r.getString(i)+" ");
else
System.out.println(r.getString(i).trim());
}
}
}

4.執行SQL語句
SQL代表著結構化查詢語言,即 Structured Query Language的縮寫。SQL是用來同數據庫服務器交互的一種語言。SQL被IBM在70-80年代開發,80年代后進行了標準化。但標準已經更新,現已出現好幾個版本。另外一些數據庫廠商也增加擴展了一些特殊的功能語句等。JDBC需要與JDBC兼容的SQL驅動支持,即支持ANSI SQL72標準。SQL有很多用途,當SQL語句被用來創建、設計數據庫時,它是一個數據定義語言;當用來向數據庫插入信息、更新或刪除已經存在的信息時,它是一個數據維護語言;當從數據庫中查詢提取信息時,它是數據查詢語言。有關SQL語句的一些語法規則,請參考有關書籍,在此略。Java語言設計java.sql 包的目的就是讓你執行符合Java的SQL語句。java.sql中的Statement 接口定義了一些方法,這些方法通過SQL語句的執行來與數據庫交互,也支持通過ResultSet對象返回查詢結果集合的處理和提供查詢處理機制的控制。execute()、 executeQuery() 和executeUpdate() 方法是Statement接口的主要方法。executeQuery() 方法執行一個 SQL語句(如SELECT語句等)并查詢返回一個ResultSet對象。executeUpdate() 方法執行一個SQL 語句 (如INSERT、UPDATE、DELETE 語句等)并更新數據庫、返回SQL查詢結果集合的行數(記錄數),如果結果集合為空則行數為0。
Java中有關SQL語句的程序片段如下:
import java.sql.*;
import java.util.*;
class ResultApp {
public static void main(String args[]) {
try{
// Load the JDBC-ODBC bridge driver方式
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:tend";
// 連接到數據庫
Connection connection=DriverManager.getConnection(url);
Statement statement = connection.createStatement();
String sql="SELECT * FROM courses";
// 執行SQL 語句得到結果集合
ResultSet result = statement.executeQuery(sql);
displayResults(result);
// 關閉數據庫連接
connection.close();
}catch(Exception ex){
System.out.println(ex);
System.exit(0);
}
}

5.數據庫安全性
數據庫的安全性問題是很多機構非常關心的問題。因為數據庫中可能包含一些比較敏感的信息需要加以限制訪問范圍;數據的完整性也是極為重要的,未授權的肆意修改數據庫信息可能造成公司巨大的損失;數據的有效提供也是重要的,Internet/Intranet用戶隨時需要信息,這就常常需要提供每天24小時、每周7天的可訪問。JDBC支持數據庫安全嗎?答案不是非常滿意。當前JDBC要依靠數據庫服務器自身提供安全保護。企業范圍的數據庫服務器,如微軟的SQL Server提供用戶ID和口令,然而,即使是口令保護也不是非常安全的,如果口令在客戶與服務器之間未加密,它們能很容易被截獲而危及安全。
Java的安全機制很高,Java2改進了沙箱,為用戶和程序人員提供了靈活的安全管理及配置工具。Applet程序安全性更加靈活,建議利用Java的安全機制及提供的一些工具來進行數據庫應用系統的開發。
Java2(JDK1.2)提供的安全工具如下:
用jar工具打包你的applets成為Java 存檔文件 (JAR);
用jarsigner對JAR文件進行數字簽名;
用policytool對信任applets的Java運行環境Java Runtime Environment (JRE)配置;
用keytool進行數字證書的簽證;

三、 Java 的數據庫應用開發展望

至此,你已知道:要進行Java 數據庫應用程序的設計,需要具備多方面的技能,包括了解或熟練數據庫驅動程序、SQL( 結構化查詢語言)以及java.sql包所包含的類、接口等。JavaSoft 已經注意到了Java 在數據庫程序設計方面的棘手而復雜,他們現在正在開發新的同Java一樣容易使用的產品JavaBlend ,該產品將大大簡化利用JDBC構建數據庫應用系統的過程。JavaBlend 將自動鏡像Java 對象成為存儲在數據庫中的信息。所有對對象的操作,都將產生與之鏡像的數據庫的動作,包括對存儲在數據庫中信息的自動查詢、更新等。一旦Java 的對象到數據庫鏡像(Java object-to-database mapping)被成功建立,JavaBlend 將免費發放給Java 程序員,以使Java 程序員從利用繁瑣SQL語句、結果集合解決方案過渡到利用JavaBlend 把對Java 對象的方法調用相應地自動轉化成SQL語句和結果集合這一簡單方案。這將使JDBC和SQL知識在數據庫開發時不必考慮過多,而使程序員專心于用戶業務方案的提供解決。JavaBlend目前并不包含在JDK 1.2中。
Java 語言及其技術是當今世界程序設計語言的主流。應用Java 技術實現數據庫應用系統是未來的發展方向,Java 的數據庫應用現已成功地應用于商業、政府及大學等領域,應用才剛剛起步。相信不久的將來,Java 技術將更加完善成熟。Java的數據庫應用也將遍地開花。

參考文獻:
[1] 《Java 1.2 unleashed》 Jamie Jaworski 1998,Macmillan Computer publishing
[2] 《Java 教程-Internet 面向對象程序設計》 Mary Campione 等著
[3] 《Java語言程序設計》 姜剛等著 1998,人民郵電出版社
[4] 《Web網站的創建、規劃、管理及信息發布》 1999,作者

作者簡介:
張姝,工程師,畢業于東北大學計算機及其應用專業。現主要從事工程CAD設計及管理信息系統開發工作,是中國電機工程學會會員,曾發表過《網絡環境下管理信息系統設計的幾點考慮》、《Intranet 環境下事物處理系統的解決方案》、《Web網站的創建、規劃、管理及信息發布》等論文。


主站蜘蛛池模板: 最新国产视频 | 日韩精品成人免费观看 | 日本午色www高清视频 | 青青草原1769久久免费播放 | 亚洲va久久久噜噜噜久久狠狠 | 亚洲a在线观看 | 亚洲欧美日韩精品久久亚洲区 | 宅男午夜视频在线观看 | 亚洲成a人片在线观看中文app | 五月婷婷六月天 | 色欧美片视频在线观看 | 视频一区在线观看 | 一级毛片视频免费 | 手机看片福利盒子久久青 | 四虎永久影院 | 午夜三级黄色片 | 速度与激情9下载 | 在线观看午夜视频 | 三级免费黄 | 亚洲精品网站日本xxxxxxx | 最近日本免费观看视频 | 亚洲一区免费在线观看 | 青青青国产在线观看免费网站 | 日本不卡一区二区三区在线观看 | 亚洲资源最新版在线观看 | 亚洲欧美亚洲 | 日本一区二区三区免费高清在线 | 天天色天天色 | 欧美怡红院高清在线 | 欧美在线免费播放 | 日韩伦理一区二区 | 欧美一级欧美三级 | 日本免费不卡在线一区二区三区 | 中文字幕免费视频精品一 | 天天射美女 | 四虎www成人影院 | 日韩美视频网站 | 日韩欧美在线观看一区 | 日韩性黄色一级 | 色女人综合网 | 在线亚洲日产一区二区 |