09Java數(shù)據(jù)庫編程電子課件 Java程序設(shè)計案例教程

上傳人:仙*** 文檔編號:253333048 上傳時間:2024-12-11 格式:PPTX 頁數(shù):26 大?。?1.34MB
收藏 版權(quán)申訴 舉報 下載
09Java數(shù)據(jù)庫編程電子課件 Java程序設(shè)計案例教程_第1頁
第1頁 / 共26頁
09Java數(shù)據(jù)庫編程電子課件 Java程序設(shè)計案例教程_第2頁
第2頁 / 共26頁
09Java數(shù)據(jù)庫編程電子課件 Java程序設(shè)計案例教程_第3頁
第3頁 / 共26頁

本資源只提供3頁預覽,全部文檔請下載后查看!喜歡就下載吧,查找使用更方便

10 積分

下載資源

資源描述:

《09Java數(shù)據(jù)庫編程電子課件 Java程序設(shè)計案例教程》由會員分享,可在線閱讀,更多相關(guān)《09Java數(shù)據(jù)庫編程電子課件 Java程序設(shè)計案例教程(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、,模塊,9,Java數(shù)據(jù)庫編程,學習目標,01,掌握在Java應(yīng)用程序中用JDBC連接驅(qū)動訪問MySQL數(shù)據(jù)庫的方法和步驟。,02,掌握通過Java應(yīng)用程序操作MySQL數(shù)據(jù)庫的方法和步驟,包括查詢(順序查詢、游動查詢)、添加、修改和刪除數(shù)據(jù)記錄等基本數(shù)據(jù)操作過程。,03,了解通過預編譯SQL語句對MySQL數(shù)據(jù)庫進行數(shù)據(jù)操作的過程。,04,理解預編譯SQL語句防止SQL注入的方法和意義。,技能目標,1.能夠在MyEclipse IDE中為Java項目配置JDBC數(shù)據(jù)庫連接驅(qū)動。,2.能夠在MyEclipse IDE中編寫Java應(yīng)用程序?qū)ySQL數(shù)據(jù)庫中的數(shù)據(jù)記錄進行查詢、添加、修改和刪除

2、等操作。,3.能夠在MyEclipse IDE中編寫預編譯SQL語句對MySQL數(shù)據(jù)庫中的數(shù)據(jù)記錄進行操作及防止SQL注入。,9.1 回顧與思考,在軟件開發(fā)過程中,通常情況下都需要利用數(shù)據(jù)庫來存放數(shù)據(jù)。用Java語言編寫的程序也要能實現(xiàn)與數(shù)據(jù)庫進行交互的功能。使用Java語言訪問數(shù)據(jù)庫主要包括從數(shù)據(jù)庫中查找符合給定條件的記錄、向數(shù)據(jù)庫中插入符合給定條件的記錄、修改或刪除數(shù)據(jù)庫中符合給定條件的記錄。,因此,本模塊我們開始學習編寫Java應(yīng)用程序訪問數(shù)據(jù)庫的方法技術(shù),內(nèi)容包含對數(shù)據(jù)庫中數(shù)據(jù)記錄的查詢、添加、修改與刪除等操作,以及使用預編譯SQL語句防止從應(yīng)用程序外部進行SQL注入。,9.2 數(shù)據(jù)庫

3、操作準備,9.2.1 創(chuàng)建MySQL數(shù)據(jù)庫,通過Java應(yīng)用程序訪問數(shù)據(jù)庫,首先要準備好數(shù)據(jù)庫及其中的數(shù)據(jù)。單擊桌面“開始”按鈕,選擇“所有程序”“MySQL”,在展開項中選擇“MySQL Server 5.5”,從中選擇“MySQL 5.5 Command Line Client”,打開MySQL命令行客戶端。,然后,輸入SQL語句“select*from student;”進行驗證??蛻舳溯敵鼋Y(jié)果如圖9,-,1所示,其表明數(shù)據(jù)庫已準備就緒。,圖9,-,1 student表的記錄,9.2 數(shù)據(jù)庫操作準備,9.2.2 加載JDBC數(shù)據(jù)庫連接驅(qū)動,在MyEclipse IDE中,右擊項目myPr

4、o,在彈出的快捷菜單中選擇Properties選項,彈出“Properties for myPro”窗口,在左側(cè)的列項中選擇Java Build Path選項,再在右側(cè)切換到Libraries選項卡,如圖9,-,2所示。,圖9,-,2“Properties for myPro”窗口,9.2 數(shù)據(jù)庫操作準備,9.2.2 加載JDBC數(shù)據(jù)庫連接驅(qū)動,單擊Add External JARs按鈕,在彈出的“JAR Selection”對話框中找到所需連接驅(qū)動所在的目錄位置,如圖9,-,3所示。,圖9,-,3“JAR Selection”對話框,9.2 數(shù)據(jù)庫操作準備,9.2.2 加載JDBC數(shù)據(jù)庫連接

5、驅(qū)動,單擊“打開”按鈕,返回“Properties for myPro”窗口,在“Java Build Path”的“Libraries”選項卡中出現(xiàn)了加載的MySQL連接驅(qū)動,如圖9,-,4所示。,圖9,-,4 MySQL連接驅(qū)動加載完成,9.3 數(shù)據(jù)庫操作技術(shù),9.3.1 查詢記錄操作,【例9,-,1】,在控制臺顯示從myDatabase數(shù)據(jù)庫的student表中查詢到的所有數(shù)據(jù)記錄。,文件名為Example9_1.java,其代碼如下。,1.順序查詢,其代碼,見,P186-187,。,運行結(jié)果如下。,9.3 數(shù)據(jù)庫操作技術(shù),9.3.1 查詢記錄操作,在游動查詢操作中,采用createSt

6、atement(int resultSetType,int resultSetConcurrency)方法將 SQL語句發(fā)送到數(shù)據(jù)庫。其參數(shù)的功能如下。,2.游動查詢,(1)resultSetType的取值決定結(jié)果集的游標能否上下移動。取值如下。,ResultSet.TYPE_FORWARD_ONLY:結(jié)果集的游標只能向下移動。,ResultSet.TYPE_SCROLL_INSENSITIVE:結(jié)果集的游標能夠上下移動。當數(shù)據(jù)庫有變化時,當前結(jié)果集不變。,ResultSet.Type_SCROLL_SENSITIVE:結(jié)果集的游標能夠上下移動。當數(shù)據(jù)庫有變化時,當前結(jié)果集同步改變。,9.3

7、數(shù)據(jù)庫操作技術(shù),9.3.1 查詢記錄操作,2.游動查詢,(2)resultSetConcurrency的取值決定能否用結(jié)果集更新數(shù)據(jù)庫。取值如下。,ResultSet.CONCUR_READ_ONLY:不能用結(jié)果集更新數(shù)據(jù)庫中的表。,ResultSet.CONCUR_UPDATABLE:能用結(jié)果集更新數(shù)據(jù)庫中的表。,(2)resultSetConcurrency的取值決定能否用結(jié)果集更新數(shù)據(jù)庫。取值如下。,ResultSet.CONCUR_READ_ONLY:不能用結(jié)果集更新數(shù)據(jù)庫中的表。,ResultSet.CONCUR_UPDATABLE:能用結(jié)果集更新數(shù)據(jù)庫中的表。,9.3 數(shù)據(jù)庫操作技

8、術(shù),9.3.1 查詢記錄操作,2.游動查詢,【例9,-,2】,游動查詢myDatabase數(shù)據(jù)庫的student表中的數(shù)據(jù)記錄。,文件名為Example9_2.java,其代碼如下。,其代碼,見,P188-190,。,運行結(jié)果如下。,一共有6條記錄。,第三條記錄為:,王五 男 1999,-,02,-,02 85 通信工程,9.3 數(shù)據(jù)庫操作技術(shù),9.3.2 添加記錄操作,【例9,-,3】,從控制臺接收數(shù)據(jù)向myDatabase數(shù)據(jù)庫的student表中插入一條記錄(,周九,男,1999,-,6,-,6,88,網(wǎng)絡(luò)工程,)。,文件名為Example9_3.java,其代碼如下。,其代碼,見,P1

9、90-192,。,運行結(jié)果如下。,9.3 數(shù)據(jù)庫操作技術(shù),9.3.3 修改記錄操作,【例9,-,4】,從控制臺接收數(shù)據(jù),將myDatabase數(shù)據(jù)庫的student表中name字段值為“李四”記錄的specialty字段值改為“人工智能工程”。,文件名為Example9_4.java,其代碼如下。,其代碼,見,P192-193,。,運行結(jié)果如下。,9.3 數(shù)據(jù)庫操作技術(shù),9.3.4 刪除記錄操作,【例9,-,5】,從控制臺接收數(shù)據(jù),將myDatabase數(shù)據(jù)庫的student表中name字段值為“周九”的記錄刪除。,文件名為Example9_5.java,其代碼如下。,其代碼,見,P194-1

10、95,。,運行結(jié)果如下。,9.4 防止SQL注入,9.4.1 SQL注入,SQL,是操作數(shù)據(jù)庫數(shù)據(jù)的結(jié)構(gòu)化查詢語言,采用SQL將應(yīng)用程序和數(shù)據(jù)庫中的數(shù)據(jù)進行交互。如果應(yīng)用程序?qū)τ脩糨斎霐?shù)據(jù)的合法性沒有判斷或過濾不嚴,則攻擊者可以修改在應(yīng)用程序中事先定義好的查詢語句,以此來實現(xiàn)欺騙數(shù)據(jù)庫執(zhí)行非授權(quán)的任意查詢,從而進一步得到相應(yīng)的數(shù)據(jù)信息,發(fā)生SQL注入攻擊。,9.4 防止SQL注入,9.4.1 SQL注入,【例9,-,6】,SQL注入示例。,首先在myDatabase數(shù)據(jù)庫中建一個表,命名為user,表結(jié)構(gòu)為name(varchar)、password(varchar),SQL語句為“creat

11、e table user(name varchar(20),password varchar(20);”。向user表中插入一條數(shù)據(jù)記錄,SQL語句為“insert into user(name,password)values(,南京交通,njjt,);”。,其代碼,見,P197-198,。,然后編寫應(yīng)用程序。文件名為Example9_6.java,其代碼如下。,9.4 防止SQL注入,9.4.1 SQL注入,【例9,-,6】,SQL注入示例。,運行后,輸入密碼時注入非法SQL,結(jié)果如下。,在沒有輸入正確的用戶名和密碼的情況下,仍然通過應(yīng)用程序非法闖入了數(shù)據(jù)庫。,如果把程序中與數(shù)據(jù)庫用戶名和密

12、碼進行比對部分的代碼,9.4 防止SQL注入,9.4.1 SQL注入,【例9,-,6】,SQL注入示例。,修改為,9.4 防止SQL注入,9.4.1 SQL注入,【例9,-,6】,SQL注入示例。,運行后,輸入用戶名和密碼時注入非法SQL,結(jié)果如下。,請輸入用戶名:java,or,1=1,請輸入密碼:mima,or,1=1,密碼不正確!,雖然保證了數(shù)據(jù)庫未被非法闖入,但是被成功地騙取了“合法”用戶身份,數(shù)據(jù)庫仍然存在潛在的危險。,9.4 防止SQL注入,9.4.2 預編譯SQL語句,對于要多次執(zhí)行的SQL語句,MySQL支持將其寫成預編譯SQL語句的形式,而后可直接多次調(diào)用。預編譯SQL語句的

13、運用分準備和執(zhí)行兩個過程:,語句準備過程是通知MySQL服務(wù)器將預編譯SQL語句編譯成執(zhí)行計劃,SQL語句只需編譯一次;語句執(zhí)行過程則直接調(diào)用編譯所形成的機器代碼段,多次執(zhí)行同一條SQL語句時,效率非常高。,在預編譯SQL語句中,允許有一個或多個未指定數(shù)值的輸入?yún)?shù),輸入?yún)?shù)用占位符“?”代替。在執(zhí)行預編譯SQL語句前,必須對“?”進行賦值。,9.4 防止SQL注入,9.4.2 預編譯SQL語句,【例9,-,7】,用預編譯SQL語句替代文件Example9_6.java中的部分代碼,達到防止SQL注入的目的。,文件名為Example9_7.java,其代碼如下。,其代碼,見,P200-201,

14、。,運行結(jié)果如下。,9.5 小結(jié),在本模塊,我們系統(tǒng)學習了在MyEclipse IDE中通過JDBC數(shù)據(jù)庫連接驅(qū)動訪問MySQL數(shù)據(jù)庫,并進行查詢(順序查詢、游動查詢)、添加、修改和刪除數(shù)據(jù)記錄等基本數(shù)據(jù)操作的過程和方法。我們還學習了預編譯SQL語句在數(shù)據(jù)操作及防止SQL注入等方面的運用。,9.6 習題,1.在MyEclipse IDE中為Java項目配置通過JDBC 訪問MySQL數(shù)據(jù)庫的連接驅(qū)動。,2.借助Java API詳細分析Java應(yīng)用程序中連接訪問MySQL數(shù)據(jù)庫的關(guān)鍵代碼。,3.Connection、Statement和ResultSet都是java.sql包中的接口。通過模塊5

15、的學習,我們知道接口中的方法都是抽象方法。但是,在數(shù)據(jù)庫操作過程中,為什么能調(diào)用上述接口中的方法呢?,提示,:調(diào)用getClass()方法查找對象的來源。,4.如果沒有使用預編譯SQL語句進行用戶登錄驗證,會產(chǎn)生怎樣的后果?,9.7 上機實踐,仿照本模塊中的例子,對myDatabase數(shù)據(jù)庫的student表繼續(xù)進行以下數(shù)據(jù)操作。,1.查詢專業(yè)為“網(wǎng)絡(luò)工程”的數(shù)據(jù)記錄,并在控制臺顯示查詢結(jié)果。,2.向student表中插入一條記錄,并查詢顯示插入結(jié)果。,3.將student表中name字段值為“王五”記錄的score字段值改為“95”,并查詢顯示更改結(jié)果。,4.刪除student表中name字段值為“孫八”的記錄,并查詢顯示刪除結(jié)果。,謝謝觀看!,

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  sobing.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!