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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

□處理問(wèn)題不同□對(duì)程序架構(gòu)不同

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

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

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

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

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

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

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

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

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

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

11Remark備注varchar100可以(null)

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

3ReaderSex類型char2不可(notnull)

4ReaderAge年齡int8可以(null)

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

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

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論