SQL Server 2022數(shù)據(jù)庫技術(shù)項(xiàng)目教程 課件 胡伏湘 項(xiàng)目7、8 數(shù)據(jù)庫安全管理、數(shù)據(jù)庫應(yīng)用程序開發(fā)項(xiàng)目實(shí)戰(zhàn)_第1頁
SQL Server 2022數(shù)據(jù)庫技術(shù)項(xiàng)目教程 課件 胡伏湘 項(xiàng)目7、8 數(shù)據(jù)庫安全管理、數(shù)據(jù)庫應(yīng)用程序開發(fā)項(xiàng)目實(shí)戰(zhàn)_第2頁
SQL Server 2022數(shù)據(jù)庫技術(shù)項(xiàng)目教程 課件 胡伏湘 項(xiàng)目7、8 數(shù)據(jù)庫安全管理、數(shù)據(jù)庫應(yīng)用程序開發(fā)項(xiàng)目實(shí)戰(zhàn)_第3頁
SQL Server 2022數(shù)據(jù)庫技術(shù)項(xiàng)目教程 課件 胡伏湘 項(xiàng)目7、8 數(shù)據(jù)庫安全管理、數(shù)據(jù)庫應(yīng)用程序開發(fā)項(xiàng)目實(shí)戰(zhàn)_第4頁
SQL Server 2022數(shù)據(jù)庫技術(shù)項(xiàng)目教程 課件 胡伏湘 項(xiàng)目7、8 數(shù)據(jù)庫安全管理、數(shù)據(jù)庫應(yīng)用程序開發(fā)項(xiàng)目實(shí)戰(zhàn)_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

項(xiàng)目7數(shù)據(jù)庫安全管理任務(wù)7.1數(shù)據(jù)庫安全管理任務(wù)7.2數(shù)據(jù)庫備份與還原12任務(wù)7.1數(shù)據(jù)庫安全管理7.1.1數(shù)據(jù)庫安全概述7.1.2數(shù)據(jù)庫安全管理操作系統(tǒng)級的安全性SQLServer級的安全性數(shù)據(jù)庫級的安全性數(shù)據(jù)庫安全等級數(shù)據(jù)庫安全管理7.1.1數(shù)據(jù)庫安全概述任務(wù)7.1在SQLSERVER中,其安全性是通過登錄管理、用戶管理、角色管理、權(quán)限管理實(shí)現(xiàn),涉及到登錄主體、操作、對象、用戶、架構(gòu)等概念。主體是可以請求系統(tǒng)資源的個體、組合過程。SQLServer系統(tǒng)管理者可以通過權(quán)限保護(hù)分層實(shí)體集合,這些實(shí)體被稱為安全對象。操作是指主體可以執(zhí)行的行為,它通過安全對象和權(quán)限設(shè)置來解決這個問題。架構(gòu)(Schema)是一組數(shù)據(jù)庫對象的集合,它被單個負(fù)責(zé)人(可以是用戶或角色)所擁有并構(gòu)成唯一命名空間,可以將架構(gòu)看成是對象的容器。任務(wù)7.1數(shù)據(jù)庫登錄模式數(shù)據(jù)庫安全管理7.1.1數(shù)據(jù)庫安全概述1登錄名指登錄到SQLServer系統(tǒng)的名稱,其管理內(nèi)容包括創(chuàng)建登錄名、設(shè)置密碼策略、查看登錄名信息、修改和刪除登錄名,可以用SSMS實(shí)現(xiàn),也可以通過命令完成。用SSMS創(chuàng)建登錄名用SQL命令創(chuàng)建登錄名維護(hù)登錄名任務(wù)7.1管理登錄名數(shù)據(jù)庫安全管理7.1.2數(shù)據(jù)庫安全管理1通過登錄名登錄到SQLServer服務(wù)器后,還不能對數(shù)據(jù)庫進(jìn)行操作,在一個用戶可以訪問數(shù)據(jù)庫之前,管理員必須在數(shù)據(jù)庫中為他建立一個用戶名。使用SSMS管理用戶用SQL命令建立用戶維護(hù)用戶任務(wù)7.1管理用戶數(shù)據(jù)庫安全管理7.1.2數(shù)據(jù)庫安全管理2角色(role),也叫服務(wù)器角色,是具有相同權(quán)限的多個用戶所組成的集合。角色是服務(wù)器級的主體,它們的作用范圍是整個服務(wù)器,分為固定服務(wù)器角色、用戶自定義數(shù)據(jù)庫角色、應(yīng)用程序角色三種類型。固定數(shù)據(jù)庫角色用戶自定義數(shù)據(jù)庫角色應(yīng)用程序角色任務(wù)7.1管理角色數(shù)據(jù)庫安全管理7.1.2數(shù)據(jù)庫安全管理3權(quán)限是執(zhí)行操作、訪問數(shù)據(jù)的通行證。只有擁有了針對某種安全對象的指定權(quán)限,才能對該對象執(zhí)行相應(yīng)的操作,不同的對象有不同的權(quán)限。權(quán)限的分類:預(yù)先定義的權(quán)限和預(yù)先未定義的權(quán)限對象權(quán)限:控制(Control)、創(chuàng)建(Create)、更改(Alter)、刪除(Delete)、模擬登錄或者模擬用戶名、插入(Insert)、選擇(Select)、接管(TakeOwnership)、更新(Update)、查看定義(ViewDefinition)、引用(References)、執(zhí)行(Execute)語句權(quán)限:CREATEDATABASE(創(chuàng)建數(shù)據(jù)庫)、CREATETABLE(創(chuàng)建表)、CREATEVIEW(創(chuàng)建視圖)、CREATEPROCEDURE(創(chuàng)建過程)、CREATEINDEX(創(chuàng)建索引)、CREATEROLE(創(chuàng)建規(guī)則)、CREATEDEFAULT(創(chuàng)建默認(rèn)值)任務(wù)7.1管理權(quán)限數(shù)據(jù)庫安全管理7.1.2數(shù)據(jù)庫安全管理4任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.1數(shù)據(jù)庫備份與還原概述7.2.2數(shù)據(jù)庫備份7.2.3數(shù)據(jù)庫還原任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.1數(shù)據(jù)庫備份與還原概述數(shù)據(jù)庫備份與還原的概念1數(shù)據(jù)庫備份是指制作數(shù)據(jù)庫結(jié)構(gòu)、對象和數(shù)據(jù)的拷貝,以便在數(shù)據(jù)庫遭到破壞的時候能夠修復(fù)數(shù)據(jù)庫,在對數(shù)據(jù)庫進(jìn)行完全備份時所有未完成的事務(wù)或者發(fā)生在備份過程中的事務(wù)都不會被備份。數(shù)據(jù)庫恢復(fù)是將數(shù)據(jù)庫副本加載到服務(wù)器中的過程,使數(shù)據(jù)庫進(jìn)入正常運(yùn)行狀態(tài)的過程。一般在以下情況下需要還原數(shù)據(jù)庫:存儲介質(zhì)損壞、用戶操作錯誤、服務(wù)器崩潰、在不同的服務(wù)器之間移動數(shù)據(jù)庫。任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.1數(shù)據(jù)庫備份與還原概述數(shù)據(jù)庫備份與還原的類型2數(shù)據(jù)庫備份的類型完整備份:備份整個數(shù)據(jù)庫的所有內(nèi)容。差異備份:差異備份是完整備份的補(bǔ)充,只備份上次完整備份后更改的數(shù)據(jù)。事務(wù)日志備份:事務(wù)日志備份只備份事務(wù)日志里的內(nèi)容。文件和文件組備份:如果在創(chuàng)建數(shù)據(jù)庫時,為數(shù)據(jù)庫創(chuàng)建了多個數(shù)據(jù)庫文件或文件組,可以使用該備份方式;使用文件和文件組備份方式可以只備份數(shù)據(jù)庫中的某些文件。任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.1數(shù)據(jù)庫備份與還原概述數(shù)據(jù)庫還原的類型數(shù)據(jù)庫還原:也叫完整還原,是通過使用數(shù)據(jù)庫備份和事務(wù)日志備份,將數(shù)據(jù)庫還原到發(fā)生失敗的時刻,因此幾乎不造成任何數(shù)據(jù)丟失。事務(wù)日志還原:根據(jù)原來事務(wù)日志備份的數(shù)據(jù),將數(shù)據(jù)庫恢復(fù)到指定的時間點(diǎn)那個狀態(tài)。文件和文件組還原:只恢復(fù)指定的文件或者文件組。任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.2數(shù)據(jù)庫備份使用SSMS管理器備份右擊數(shù)據(jù)庫名(如:libsys),從快捷菜單中依次執(zhí)行“任務(wù)”-“備份”任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.2數(shù)據(jù)庫備份用命令備份數(shù)據(jù)庫創(chuàng)建備份設(shè)備備份設(shè)備主要是硬盤,也可以是遠(yuǎn)程服務(wù)器,用URL地址表示。方法:從SSMS管理器窗口中,展開“服務(wù)器對象”,找到“備份設(shè)備”,執(zhí)行“新建備份設(shè)備”方法2:利用系統(tǒng)存儲過程sp_addumpdevice也可以建立備份設(shè)備格式:sp_addumpdevice'備份設(shè)備類型','邏輯名','物理名'任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.2數(shù)據(jù)庫備份備份數(shù)據(jù)庫用BACKUP命令實(shí)現(xiàn)數(shù)據(jù)庫的備份格式:BACKUPDATABASE數(shù)據(jù)庫名TO備份設(shè)備名

[WITH[PASSWORD=密碼][,STATS=百分比n]]說明:PASSWORD表示為數(shù)據(jù)庫的備份設(shè)置密碼,STATS表示進(jìn)度提示,默認(rèn)值是10%。任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.2數(shù)據(jù)庫備份用命令實(shí)現(xiàn)事務(wù)日志備份用BACKUP命令實(shí)現(xiàn)事務(wù)日志備份格式:BACKUPLOG數(shù)據(jù)庫名TO備份設(shè)備名任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.2數(shù)據(jù)庫備份刪除備份設(shè)備用系統(tǒng)存儲過程SP_DROPDEVICE刪除備份設(shè)備格式:sp_dropdevice'備份設(shè)備邏輯名'[,'delfile']說明:如果加上delfile,表示連同備份設(shè)備上的文件一起刪除。任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.3數(shù)據(jù)庫還原恢復(fù)模式旨在控制事務(wù)日志維護(hù),它總是與備份模式相對應(yīng),有三種恢復(fù)模式:簡單恢復(fù)模式、完整恢復(fù)模式和大容量日志恢復(fù)模式任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.3數(shù)據(jù)庫還原還原數(shù)據(jù)庫的任務(wù)第一,進(jìn)行安全檢查,即確認(rèn)數(shù)據(jù)庫備份的完整性第二,重建數(shù)據(jù)庫。在SQLServer中,恢復(fù)數(shù)據(jù)庫的語句是RESTORE。檢查備份完整性的命令是:RESTOREVERIFYONLYFROM備份設(shè)備名RESTOREVERIFYONLYFROMDISK='備份文件名'任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.3數(shù)據(jù)庫還原用SSMS還原數(shù)據(jù)庫右擊“數(shù)據(jù)庫”,選擇“還原數(shù)據(jù)庫”,或者右擊數(shù)據(jù)庫名,執(zhí)行“任務(wù)”下的“還原”,再進(jìn)一步選擇“數(shù)據(jù)庫”任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.3數(shù)據(jù)庫還原用命令還原數(shù)據(jù)庫恢復(fù)數(shù)據(jù)庫的命令是RESTORE,格式是:RESTOREDATABASE數(shù)據(jù)庫名FROM備份設(shè)備名[WITH[PASSWORD=密碼][[,]{NORECOVERY|RECOVERY|STANDBY=恢復(fù)文件名}][[,]FILE=n][[,]RESTART][[,]REPLACE][[,]STOPAT=date_time]

]任務(wù)7.2數(shù)據(jù)庫備份與還原7.2.3數(shù)據(jù)庫還原數(shù)據(jù)庫的導(dǎo)出數(shù)據(jù)庫中的表可以導(dǎo)出到其它數(shù)據(jù)庫管理系統(tǒng)(如MySQL、Oracle)中,也可以導(dǎo)出為Excel表,方便在其它軟件中處理。通常用SSMS管理器窗口操作。任務(wù)7.2數(shù)據(jù)庫備份與還原本節(jié)內(nèi)容小結(jié)本小節(jié)主要學(xué)習(xí)了以下內(nèi)容:數(shù)據(jù)庫備份與還原的概念數(shù)據(jù)庫備份與還原的類型數(shù)據(jù)庫備份的方法與實(shí)現(xiàn)數(shù)據(jù)庫還原的方法與實(shí)現(xiàn)謝謝觀看!項(xiàng)目8數(shù)據(jù)庫應(yīng)用程序開發(fā)項(xiàng)目實(shí)戰(zhàn)任務(wù)8.1數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)任務(wù)8.3使用JAVA開發(fā)SQLServer2022數(shù)據(jù)庫程序123任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)任務(wù)8.1數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)8.1.1C/S(客戶端/服務(wù)器端)結(jié)構(gòu)8.1.2B/S(瀏覽器端/服務(wù)器端)結(jié)構(gòu)8.1.3三層(或N層)結(jié)構(gòu)數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)任務(wù)8.1數(shù)據(jù)庫應(yīng)用程序一般由三個部分組成:表示層:提供給用戶進(jìn)行操作,實(shí)現(xiàn)人機(jī)交互的前臺界面;二業(yè)務(wù)邏輯層:實(shí)現(xiàn)程序具體功能的業(yè)務(wù)邏輯組件;三數(shù)據(jù)層:為應(yīng)用程序提供數(shù)據(jù)的后臺數(shù)據(jù)庫。在軟件項(xiàng)目開發(fā)領(lǐng)域中,目前最流行的程序結(jié)構(gòu)模式:C/S模式B/S模式三層(或N層)模式任務(wù)8.1數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)8.1.1C/S(客戶端/服務(wù)器端)結(jié)構(gòu)最簡單的一種程序開發(fā)模式,也是早期項(xiàng)目開發(fā)最常使用的一種開發(fā)模式。在這種模式下,通過把任務(wù)合理分配到客戶端和服務(wù)器端來降低系統(tǒng)運(yùn)行時的通信開銷。在C/S模式中:后臺數(shù)據(jù)庫的管理由數(shù)據(jù)庫服務(wù)器負(fù)責(zé)。應(yīng)用程序的一些數(shù)據(jù)處理,如數(shù)據(jù)訪問規(guī)則、業(yè)務(wù)邏輯規(guī)則、數(shù)據(jù)校驗(yàn)等操作,則可以放在兩個不同的處理機(jī)上來完成。任務(wù)8.1C/S結(jié)構(gòu)的優(yōu)點(diǎn)1數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)8.1.1C/S(客戶端/服務(wù)器端)結(jié)構(gòu)C/S結(jié)構(gòu)的優(yōu)點(diǎn)是能充分發(fā)揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器;對應(yīng)的優(yōu)點(diǎn)就是客戶端響應(yīng)速度快。應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較輕。數(shù)據(jù)的儲存管理功能較為透明。任務(wù)8.1C/S結(jié)構(gòu)的不足2數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)8.1.1C/S(客戶端/服務(wù)器端)結(jié)構(gòu)這種模式的軟件存在以下幾個不足:性能較差伸縮性差代碼可重性差可移植性差任務(wù)8.1數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)8.1.2B/S(瀏覽器端/服務(wù)器端)結(jié)構(gòu)對C/S模式的一種改進(jìn)的結(jié)構(gòu)。在B/S模式中,用戶界面完全通過WWW瀏覽器實(shí)現(xiàn),一部分事務(wù)邏輯在前端實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn)??蛻魴C(jī)上只要安裝一個瀏覽器,如InternetExplorer或NetscapeNavigator,服務(wù)器安裝SQLServer、Oracle、MYSQL等數(shù)據(jù)庫。瀏覽器通過WebServer同數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互。任務(wù)8.1數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)8.1.2B/S(瀏覽器端/服務(wù)器端)結(jié)構(gòu)B/S結(jié)構(gòu)的優(yōu)點(diǎn)1利用了不斷成熟的Web瀏覽器技術(shù):結(jié)合瀏覽器的多種腳本語言和ActiveX技術(shù),用通用瀏覽器實(shí)現(xiàn)原來需要復(fù)雜專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,同時節(jié)約了開發(fā)成本??梢栽谌魏蔚胤竭M(jìn)行操作而不用安裝任何專門的軟件,只要有一臺能上網(wǎng)的電腦就能使用,客戶端零安裝、零維護(hù)。系統(tǒng)的擴(kuò)展非常容易。任務(wù)8.1數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)8.1.2B/S(瀏覽器端/服務(wù)器端)結(jié)構(gòu)B/S結(jié)構(gòu)的特點(diǎn)2C/S模式是建立在局域網(wǎng)基礎(chǔ)上的,而B/S模式是建立在Internet基礎(chǔ)上的;兩者的區(qū)別主要表現(xiàn)在硬件環(huán)境、安全控制、程序架構(gòu)、可重性、可維護(hù)性和用戶界面等方面?!跤布h(huán)境不同

□系統(tǒng)可維護(hù)性不同□對安全要求不同

□處理問題不同□對程序架構(gòu)不同

□用戶接口不同□軟件可重用性不同任務(wù)8.1數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)8.1.3三層(或N層)結(jié)構(gòu)三層體系結(jié)構(gòu),是在客戶端和數(shù)據(jù)庫之間加入一層“中間層”,也叫組件層。在三層結(jié)構(gòu)中,中間層起著雙重作用,對于數(shù)據(jù)層是客戶機(jī),對于用戶層是服務(wù)器。用戶表示層。實(shí)現(xiàn)用戶界面,并保證用戶界面的友好性、統(tǒng)一性。業(yè)務(wù)邏輯層。實(shí)現(xiàn)數(shù)據(jù)庫的存取及應(yīng)用程序的商業(yè)邏輯計算。數(shù)據(jù)服務(wù)層。實(shí)現(xiàn)數(shù)據(jù)定義、存儲、備份和檢索等功能,主要由數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)。任務(wù)8.1數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)8.1.3三層(或N層)結(jié)構(gòu)三層結(jié)構(gòu)的系統(tǒng)具有如下特點(diǎn):業(yè)務(wù)邏輯層放在中間層可以提高系統(tǒng)的性能,使中間層業(yè)務(wù)邏輯處理與數(shù)據(jù)層的業(yè)務(wù)數(shù)據(jù)結(jié)合在一起,而無需考慮客戶的具體位置。添加新的中間層服務(wù)器,能夠滿足新增客戶機(jī)的需求,大大提高了系統(tǒng)的可伸縮性。業(yè)務(wù)邏輯層放在中間層,從而使業(yè)務(wù)邏輯集中到一處,便于整個系統(tǒng)的維護(hù)和管理及代碼的復(fù)用。任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.1JDBC技術(shù)簡介8.2.2JDBC驅(qū)動程序8.2.3JDBC中的常用類及其方法任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.1JDBC技術(shù)簡介JDBC(JavaDataBaseConnectivity,Java數(shù)據(jù)庫連接)是Java程序連接和存取數(shù)據(jù)庫的應(yīng)用程序接口(API),它由一組用Java語言編寫的類與接口組成。JDBC是一組由Java語言編寫的類和接口,其API包含在java.sql和javax.sql兩個包中。任務(wù)8.2加載訪問數(shù)據(jù)庫的驅(qū)動程序1JDBC數(shù)據(jù)庫訪問技術(shù)8.2.1JDBC技術(shù)簡介首先要在應(yīng)用程序中加載驅(qū)動程序Driver,使用Class.forName()方法加載特定的驅(qū)動程序,每種數(shù)據(jù)庫管理系統(tǒng)的驅(qū)動程序不同,由數(shù)據(jù)庫廠商提供。格式:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");任務(wù)8.2建立數(shù)據(jù)庫連接2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.1JDBC技術(shù)簡介通過DriverManager類的getConnection()方法獲得表示數(shù)據(jù)庫連接的Connection類對象,該方法以一個數(shù)據(jù)庫的String類型的URL為參數(shù),返回一個連接數(shù)據(jù)庫的接口類Connection對象。格式:Stringurl="jdbc:sqlserver://localhost:1434;databaseName=libsys;encrypt=true;trustServerCertificate=true";//獲取連接字符串urlStringusername="root";//使用能訪問SQLServer數(shù)據(jù)庫的用戶名saStringpassword="123456";//使用口令Connectioncon=DriverManager.getConnection(url,username,password);任務(wù)8.2生成語句對象3JDBC數(shù)據(jù)庫訪問技術(shù)8.2.1JDBC技術(shù)簡介獲取Connection對象以后,可以用Connection對象的方法創(chuàng)建一個Statement或PreparedStatement類的對象實(shí)例。該對象可以執(zhí)行SELECT語句的executeQuery()方法和執(zhí)行INSERT、UPDATE、DELETE、語句的executeUpdate方法。調(diào)用Statement或PreparedStatement對象中的executeQuery()或executeUpdate()方法執(zhí)行SQL語句,如果是查詢語句,要定義一個ResultSet對象接收返回的結(jié)果集。Connectioncon=getConnection();//取得數(shù)據(jù)庫的連接Statementstmt=con.createStatement();//創(chuàng)建一個聲明,用來執(zhí)行sql語句任務(wù)8.2利用語句對象進(jìn)行數(shù)據(jù)庫操作4JDBC數(shù)據(jù)庫訪問技術(shù)8.2.1JDBC技術(shù)簡介Stringsql="SELECT*FROMreaderinfo”;//執(zhí)行查詢數(shù)據(jù)庫的sql語句ResultSetrs=stmt.executeQuery(sql);//返回一個結(jié)果集可以使用while循環(huán)語句來遍歷整個結(jié)果集。分析結(jié)果集的基本框架如下:while(rs.next()){ //處理結(jié)果集}任務(wù)8.2關(guān)閉使用完的對象5JDBC數(shù)據(jù)庫訪問技術(shù)8.2.1JDBC技術(shù)簡介使用與數(shù)據(jù)庫相關(guān)的對象非常耗內(nèi)存,因此在數(shù)據(jù)庫訪問后要關(guān)閉與數(shù)據(jù)庫的連接,同時還應(yīng)該關(guān)閉ResultSet,Statement和Connection等對象??梢允褂妹總€對象自己的close()法完成。rs.close();//關(guān)閉數(shù)據(jù)集stmt.close();//關(guān)閉語句con.close();//關(guān)閉連接任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.2JDBC驅(qū)動程序JDBC-ODBC橋驅(qū)動程序1將JDBC調(diào)用轉(zhuǎn)換為ODBC的調(diào)用,利用ODBC驅(qū)動程序提供DJBC訪問。這意味著每個客戶端都要安裝數(shù)據(jù)庫對應(yīng)的ODBC驅(qū)動及驅(qū)動管理器才能使用,而且從程序到數(shù)據(jù)庫需要轉(zhuǎn)譯兩次,效率低下。因此,實(shí)在沒有其他驅(qū)動可以使用的情況下才使用。任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.2JDBC驅(qū)動程序本地API2將JDBC調(diào)用轉(zhuǎn)換為特定的數(shù)據(jù)庫調(diào)用,比如轉(zhuǎn)換為Oracle、Sybase、Informix、DB2或其他DBMS的調(diào)用。與JDBC-ODBC橋連一樣,這類Driver也要求客戶端的機(jī)器安裝相應(yīng)的二進(jìn)制代碼,無疑這是極不友好的。任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.2JDBC驅(qū)動程序JDBC網(wǎng)絡(luò)純Java驅(qū)動程序3"JDBC-NetpureJavadriver",稱為JDBC網(wǎng)絡(luò)純Java驅(qū)動。這種驅(qū)動程序能將JDBC的調(diào)用轉(zhuǎn)換為獨(dú)立于數(shù)據(jù)庫的網(wǎng)絡(luò)協(xié)議。這種類型的Driver特別適合于具有中間件(Middleware)的分布式應(yīng)用,服務(wù)器中間件能夠?qū)⑺募僇ava客戶機(jī)連接到多種不同的數(shù)據(jù)庫上。任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.2JDBC驅(qū)動程序本地協(xié)議純Java驅(qū)動程序4"nativeprotocol,pureJavadriver",稱為本地協(xié)議純Java驅(qū)動。這種驅(qū)動程序能將JDBC調(diào)用轉(zhuǎn)換為數(shù)據(jù)庫直接使用的網(wǎng)絡(luò)協(xié)議。這種直接連接方式不需要安裝客戶端軟件,而且是純凈的百分百Java程序(它使用Javasockets來連接數(shù)據(jù)庫),所以特別適合于Internet應(yīng)用。任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.3JDBC中的常用類及其方法使用JDBC編寫訪問數(shù)據(jù)庫的應(yīng)用程序,需要經(jīng)過加載數(shù)據(jù)庫驅(qū)動程序、創(chuàng)建連接、創(chuàng)建Statement對象、發(fā)送SQL語句、解析操作結(jié)果等步驟,它們由JDBCAPI中一組類的方法實(shí)現(xiàn)。任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.3JDBC中的常用類及其方法Class類1Class類全稱java.lang.Class,是Java一個類。Java程序運(yùn)行時會自動創(chuàng)建程序中的每個類的Class對象,通過Class類的方法,可以得到程序中每個類的信息。Class定義的成員方法:(1)publicstaticClassforName(StringclassName);該方法根據(jù)給定的字符串參數(shù)返回相應(yīng)的Class對象。例:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");加載指定名稱的驅(qū)動程序(2)publicStringgetName();返回類名。例:Stringstr="ThisisaString";System.out.println(str.getClass().getName());任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.3JDBC中的常用類及其方法DriverManager驅(qū)動程序管理類2DriverManager驅(qū)動程序管理器類在用戶程序和數(shù)據(jù)庫系統(tǒng)之間維護(hù)著與數(shù)據(jù)庫驅(qū)動程序之間的連接。它實(shí)現(xiàn)驅(qū)動程序的裝載、創(chuàng)建與數(shù)據(jù)庫系統(tǒng)連接的Connection類對象。DriverManager類定義的靜態(tài)成員方法:publicstaticConnectiongetConnection(Stringurl,Stringusername,Stringpassword):根據(jù)url、數(shù)據(jù)庫登錄的用戶名、密碼獲取一個數(shù)據(jù)庫的連接對象。任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.3JDBC中的常用類及其方法Connection數(shù)據(jù)連接類3Connection連接類用于創(chuàng)建連接到指定的數(shù)據(jù)庫。通過DriverManager類getConnection()方法獲取到數(shù)據(jù)庫連接,其格式如下:Connectioncon=DriverManager.getConnection(url,username,password);Connetction類中重要的成員方法:(1)createStatement()方法:創(chuàng)建Statement的實(shí)例。(2)prepareStatement()方法:創(chuàng)建PreparedStatement類的實(shí)例。(3)close()方法:關(guān)閉連接。任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.3JDBC中的常用類及其方法Statement數(shù)據(jù)庫語句操作類4Statement數(shù)據(jù)庫操作類提供執(zhí)行數(shù)據(jù)庫操作的方法,如更新、查詢數(shù)據(jù)庫記錄等。創(chuàng)建Statement類對象:Statementstmt=con.createStatement();Statement類中重要的成員方法:(1)executeQuery()方法(2)executeUpdate()方法(3)close()方法任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.3JDBC中的常用類及其方法PreparedStatement對象5PreparedStatement對象繼承了Statement,但PreparedStatement語句中包含了警告預(yù)編譯的SQL語句,因此可以獲得更高的執(zhí)行效率。在PreparedStatement語句中可以包含多個用問號"?"代表的字段,在程序中可以利用setXXX()方法設(shè)置該字段的內(nèi)容,從而增強(qiáng)了程序設(shè)計的動態(tài)性。ResultSetexecuteQuery(Stringsql):可以執(zhí)行SQL查詢并獲取ResultSet對象。intexecuteUpdate(Stringsql):可以執(zhí)行Update/Insert/Delete操作,返回值是執(zhí)行該操作所影響的行數(shù)。Booleanexecute(Stringsql):這是一個最為一般的執(zhí)行方法,可以執(zhí)行任意SQL語句,然后獲得一個布爾值,表示是否返回ResultSet。任務(wù)8.2JDBC數(shù)據(jù)庫訪問技術(shù)8.2.3JDBC中的常用類及其方法ResultSet結(jié)果集類6ResultSet類常用的方法:next()方法:光標(biāo)移到下一條記錄,返回一個boolean值。previous()方法:光標(biāo)移到前一條記錄。getXXX()方法:獲取指定類型的字段的值。調(diào)用方法getXXX("字段名")或getXXX(inti)。其中i值從1開始表示第一列的字段。close()方法:關(guān)閉ResultSet對象。任務(wù)8.3

使用JAVA開發(fā)SQLServer2022數(shù)據(jù)庫程序8.3.1項(xiàng)目任務(wù)描述8.3.2數(shù)據(jù)庫設(shè)計8.3.3項(xiàng)目功能實(shí)現(xiàn)任務(wù)8.3使用JAVA開發(fā)SQLServer2022數(shù)據(jù)庫程序8.3.1項(xiàng)目描述使用Java語言開發(fā)一個CCTC圖書管理系統(tǒng),包括讀者管理和圖書管理兩大功能模塊。其中讀者管理模塊需要實(shí)現(xiàn)讀者登錄、讀者注冊和讀者信息修改等功能;圖書管理模塊需要實(shí)現(xiàn)圖書信息添加、圖書信息修改、刪除圖書和圖書信息查詢等功能。任務(wù)8.3使用JAVA開發(fā)SQLServer2022數(shù)據(jù)庫程序8.3.2數(shù)據(jù)庫設(shè)計CCTC圖書管理系統(tǒng)采用Java語言開發(fā),JDK版本為1.8及以上,開發(fā)環(huán)境為Eclipse2020,數(shù)據(jù)庫采用SQLServer2022支持,項(xiàng)目數(shù)據(jù)庫名稱為libsys。后臺數(shù)據(jù)存儲在項(xiàng)目數(shù)據(jù)庫libsys中,libsys數(shù)據(jù)庫中有三張表,分別是readerinfo(讀者信息表)、bookinfo(圖書信息表)和borrowinfo(借閱信息表)表名功能主要欄目說明bookInfo存儲圖書的基本信息ISBN書號,書名,出版社,主編要求在borrowInfo表之前建立readerInfo存儲讀者的基本信息借書證號,讀者姓名要求在borrowInfo表之前建立borrowInfo存儲圖書借閱和歸還情況書號,借書證號,借書日期,歸還日期書號和借書證號分別來源于bookinfo和readerinfo表任務(wù)8.3使用JAVA開發(fā)SQLServer2022數(shù)據(jù)庫程序8.3.2數(shù)據(jù)庫設(shè)計bookinfo(圖書信息表)表結(jié)構(gòu)序號屬性名含義數(shù)據(jù)類型長度是否可為空約束1BookIDISBN書號char20不可(notnull)主鍵2BookName圖書名稱varchar40不可(notnull)

3BookType圖書類型varchar20不可(notnull)

4Writer作者姓名varchar8不可(notnull)

5Publish出版信息varchar30不可(notnull)

6PublishDate出版日期datetime默認(rèn)可以(null)

7Price銷售價格decimal6,2可以(null)

8BuyDate采購日期date默認(rèn)可以(null)

9BuyCount庫存數(shù)量int默認(rèn)不可(notnull)

10AbleCount可借數(shù)量int默認(rèn)不可(notnull)

11Remark備注varchar100可以(null)

任務(wù)8.3使用JAVA開發(fā)SQLServer2022數(shù)據(jù)庫程序8.3.2數(shù)據(jù)庫設(shè)計readerinfo(讀者信息表)表結(jié)構(gòu)序號屬性名含義數(shù)據(jù)類型長度是否可為空約束1ReaderID借書證號char10不可(notnull)主鍵2ReaderName姓名char10不可(notnull)

3ReaderSex類型char2不可(notnull)

4ReaderAge年齡int8可以(null)

5Department所在部門Varchar30不可(notnull)

6ReaderType讀者類型char10不可(notnull)教師、學(xué)生、臨時7StartDate辦證日期date默認(rèn)不可(notnull)默認(rèn)系統(tǒng)日期8Mobile電話varchar12可以(null)

9Email郵箱varchar40可以(null)必須包含@符號10Memory備注varchar50可以(null)

任務(wù)8.3使用JAVA開發(fā)SQLServer2022數(shù)據(jù)庫程序8.3.2數(shù)據(jù)庫設(shè)計borrowinfo(借閱信息表)表結(jié)構(gòu)序號屬性名含義數(shù)據(jù)類型長度是否可為空約束1ReaderID借書證號char10不可(notnull)主鍵,外鍵來源于ReaderInfo2BookID書號char20不可(notnull)主鍵,外鍵來源于BookInfo3BorrowDate借書日期date默認(rèn)不可(notnull)主鍵4Deadline應(yīng)歸還日期date默認(rèn)不可(notnull)

5ReturnDate實(shí)際歸還日期date默認(rèn)可以(null)

任務(wù)8.3使用JAVA開發(fā)SQLServer2022數(shù)據(jù)庫程序8.3.3項(xiàng)目功能的實(shí)現(xiàn)readerinfo數(shù)據(jù)表的結(jié)構(gòu)和數(shù)據(jù)CCTC圖書管理系統(tǒng)后臺數(shù)據(jù)庫libsys的實(shí)現(xiàn)1任務(wù)8.3使用JAVA開發(fā)SQLServer2022數(shù)據(jù)庫程序8.3.3項(xiàng)目功能的實(shí)現(xiàn)創(chuàng)建數(shù)據(jù)庫連接類DBConn,用于連接數(shù)據(jù)庫并實(shí)現(xiàn)數(shù)據(jù)訪問

privatestaticStringDRIVERNAME="com.microsoft.sqlserver.jdbc.SQLServerDriver"; privatestaticString

溫馨提示

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

最新文檔

評論

0/150

提交評論