版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
JaVa程序設計任務式教程01任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫02任務9-2實現(xiàn)顯示圖書信息的功能目錄CONTNETS單元九
JDBC數(shù)據(jù)庫編程03任務9-3實現(xiàn)圖書數(shù)據(jù)的添加、修改和刪除功能單元目標能夠?qū)?shù)據(jù)庫與數(shù)據(jù)表進行創(chuàng)建、查看、修改和刪除操作。能夠編寫SQL語句進行數(shù)據(jù)的增、刪、改、查操作。能夠使用JDBC進行數(shù)據(jù)庫的連接、查詢、更新和刪除等操作。培養(yǎng)學生在實際項目中應用JDBC進行數(shù)據(jù)庫操作的能力。培養(yǎng)學生在使用JDBC時注重代碼規(guī)范和安全性的習慣。知識目標能力目標素養(yǎng)目標學習目標掌握JDBC連接數(shù)據(jù)庫的方式。掌握MySQL數(shù)據(jù)庫、數(shù)據(jù)表與數(shù)據(jù)的基本操作。掌握JDBC操作數(shù)據(jù)庫的方式。01任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫JDBC簡介下載并添加數(shù)據(jù)庫驅(qū)動加載驅(qū)動程序創(chuàng)建數(shù)據(jù)庫連接對象SQL概述創(chuàng)建與查看數(shù)據(jù)庫使用、修改和刪除數(shù)據(jù)庫任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-JDBC簡介JDBC簡介JDBC(JavaDatabaseConnectivity,Java數(shù)據(jù)庫連接),它是一套用于執(zhí)行SQL語句的JavaAPI。應用程序可通過這套API連接到關系型數(shù)據(jù)庫,并使用SQL語句來完成對數(shù)據(jù)庫中數(shù)據(jù)的查詢、新增、更新和刪除等操作。應用程序使用JDBC訪問數(shù)據(jù)庫的方式如圖JDBC在應用程序與數(shù)據(jù)庫之間起到了一個橋梁作用,當應用程序使用JDBC訪問特定的數(shù)據(jù)庫時,只需要通過不同的數(shù)據(jù)庫驅(qū)動與其對應的數(shù)據(jù)庫進行連接,連接后即可對該數(shù)據(jù)庫進行相應的操作任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-使用JDBC連接數(shù)據(jù)庫下載并添加數(shù)據(jù)庫驅(qū)動1.下載MySQL8.4.0驅(qū)動,在瀏覽器中訪問MySQL官網(wǎng)2.單擊“SelectOperatingSystem…”下拉框,選擇PlatformIndependent選項,顯示獨立于平臺的MySQL8.4.0的驅(qū)動壓縮包任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-使用JDBC連接數(shù)據(jù)庫下載并添加數(shù)據(jù)庫驅(qū)動3.單擊PlatformIndependent(ArchitectureIndependent),ZIPArchive(Windows系統(tǒng)對應的MySQL驅(qū)動)后的“Download”按鈕,進入MySQLCommunityDownloads頁面4.單擊頁面左下角的“Nothanks,juststartmydownload.”,開始下載MySQL的驅(qū)動壓縮包mysql-connector-j-8.4.0.zip任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-使用JDBC連接數(shù)據(jù)庫加載驅(qū)動程序1.在Eclipse中創(chuàng)建一個名為Chapter09的程序,然后選中該程序右擊,在彈出的菜單列表中選擇New→Folder選項,會彈出一個創(chuàng)建文件夾的窗口2.在Foldername右側(cè)的輸入框中輸入文件夾的名稱lib,該文件夾用于存放Chapter09程序中需要的庫文件,單擊“Finish”按鈕,創(chuàng)建lib文件夾。創(chuàng)建完lib文件夾后,解壓mysql-connector-j-8.4.0.zip壓縮包,將解壓后得到的mysql-connector-j-8.4.0.jar(MySQL驅(qū)動JAR包)復制到lib文件夾中,并選中該JAR包,右擊選擇BuildPath→AddtoBuildPath選項,此時會將MySQL的驅(qū)動JAR包添加到Chapter09程序中,添加后的效果如圖任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-使用JDBC連接數(shù)據(jù)庫加載驅(qū)動程序加載數(shù)據(jù)庫驅(qū)動通常使用Class類的靜態(tài)方法forName()來實現(xiàn),具體實現(xiàn)方式Class.forName("DriverName");上述代碼中,DriverName就是數(shù)據(jù)庫驅(qū)動類所對應的字符串。例如,要加載MySQL數(shù)據(jù)庫的驅(qū)動可以采用如下代碼://加載8.0版本之前的MySQL數(shù)據(jù)庫驅(qū)動Class.forName("com.mysql.jdbc.Driver");//加載8.0版本之后的MySQL數(shù)據(jù)庫驅(qū)動Class.forName("com.mysql.cj.jdbc.Driver");加載Oracle數(shù)據(jù)庫的驅(qū)動可以采用如下代碼:Class.forName("oracle.jdbc.driver.OracleDriver");任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-使用JDBC連接數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫連接對象使用JDBC創(chuàng)建連接數(shù)據(jù)庫的對象時,需要用到Connection接口和DriverManager類,Connection接口代表Java程序和數(shù)據(jù)庫的連接對象,只有獲得該連接對象后,才能訪問數(shù)據(jù)庫,并操作數(shù)據(jù)表。DriverManager類主要用于加載JDBC驅(qū)動并建立與數(shù)據(jù)庫的連接。在Connection接口中,定義了一系列方法,其常用方法如下所示。StatementcreateStatement():用于返回一個向數(shù)據(jù)庫發(fā)送語句的Statement對象。PreparedStatementprepareStatement(Stringsql):用于返回一個PreparedStatement對象,該對象用于向數(shù)據(jù)庫發(fā)送參數(shù)化的SQL語句。CallableStatementprepareCall(Stringsql):用于返回一個CallableStatement對象,該對象用于調(diào)用數(shù)據(jù)庫中的存儲過程。在DriverManager類中,定義了兩個比較重要的靜態(tài)方法,如下所示。staticsynchronizedvoidregisterDriver(Driverdriver):用于向DriverManager類中注冊給定的JDBC驅(qū)動程序。staticConnectiongetConnection(Stringurl,Stringuser,Stringpwd):用于建立和數(shù)據(jù)庫的連接,并返回表示連接的Connection對象。任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-使用JDBC連接數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫連接對象通常不使用DriverManager.registerDriver(Driverdriver)這種方式注冊驅(qū)動,因為選擇要注冊的JDBC驅(qū)動類com.mysql.jdbc.Driver中有一段靜態(tài)代碼塊,是向DriverManager類注冊一個Driver實例,當再次執(zhí)行DriverManager.registerDriver(newDriver())代碼的時候,靜態(tài)代碼塊也已經(jīng)執(zhí)行了,相當于實例化了兩個Driver對象,因此在加載數(shù)據(jù)庫驅(qū)動時通常使用Class類的靜態(tài)方法forName()來實現(xiàn)當想要使用JDBC建立并獲取數(shù)據(jù)庫連接對象時,需要使用DriverManager類中提供的getConnection()方法,建立并獲取數(shù)據(jù)庫連接的方式如下:Connectionconn=DriverManager.getConnection(Stringurl,Stringuser,Stringpwd);上述代碼中,getConnection()方法中有3個參數(shù),第1個參數(shù)url表示連接數(shù)據(jù)庫的URL,第2個參數(shù)user表示登錄數(shù)據(jù)庫的用戶名,第3個參數(shù)pwd表示登錄數(shù)據(jù)庫的密碼。用戶名和密碼由數(shù)據(jù)庫管理員設置,連接數(shù)據(jù)庫的URL則需要遵循一定的書寫格式,以MySQL數(shù)據(jù)庫為例,其地址的書寫格式如下:jdbc:mysql://hostname:port/databasename任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-MySQL數(shù)據(jù)庫的操作SQL概述SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)是用于管理關系型數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的標準語言。SQL支持與數(shù)據(jù)庫建立聯(lián)系并進行溝通,支持對數(shù)據(jù)庫進行各種操作,包括添加、刪除、修改和查詢數(shù)據(jù)。SQL是一種聲明式語言,它不需要指定如何執(zhí)行操作,而是讓數(shù)據(jù)庫管理系統(tǒng)來決定最有效的執(zhí)行方法。SQL語句結(jié)構(gòu)簡潔、功能強大,其主要特點如下所示。1.簡單易學它都是由描述性很強的英語單詞組成的,且數(shù)目不多、不區(qū)分大小寫。2.綜合統(tǒng)一SQ綜合了數(shù)據(jù)庫定義語言、數(shù)據(jù)操作語言、數(shù)據(jù)控制語言的功能,它可以對關系模式、數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫重構(gòu)以及數(shù)據(jù)庫安全性控制等方面進行一系列操作要求。3.高度非過程化SQ操作數(shù)據(jù)庫只需指出“做什么”,無須指明“怎么做”,存取路徑的選擇和操作的執(zhí)行均由數(shù)據(jù)庫自動完成。4.面向集合的操作方式不僅SQL的查詢結(jié)果可以是元組的集合,而且SQL的插入、刪除、更新操作的對象也可以是元組的集合。任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-MySQL數(shù)據(jù)庫的操作SQL概述SQL語句包含了所有對數(shù)據(jù)庫的操作,它主要由4個部分組成,具體如下。1.DDL(DatabaseDefinitionLanguage,數(shù)據(jù)庫定義語言)DD用于定義或改變表的結(jié)構(gòu)、數(shù)據(jù)類型、表之間的鏈接和約束等初始化工作。DDL常用的語句關鍵字包括CREATE、DROP、ALTER等。2.DML(DataManipulationLanguage,數(shù)據(jù)操作語言)DM用于對數(shù)據(jù)進行操作,常用的語句關鍵字有INSERT、UPDATE、DELETE,分別代表插入、更新與刪除,以支持開發(fā)以數(shù)據(jù)為中心的應用程序。3.DQL(DataQueryLanguage,數(shù)據(jù)庫查詢語言)DQ用于對數(shù)據(jù)進行查詢。DCL主要關鍵字包括SELECTFROM、WHERE。4.DCL(DataControlLanguage,數(shù)據(jù)控制語言)DCL主要用于對數(shù)據(jù)訪問權(quán)限進行控制,定義數(shù)據(jù)庫、表字段、用戶的訪問權(quán)限和安全級別,主要關鍵字包括GRANT、REVOKE、COMMIT和ROLLBACK。GRANT語句用于給用戶添加權(quán)限;REVOKE語句用于收回用戶的權(quán)限;COMMIT語句用于提交事務;ROLLBACK語句用于回滾事務。任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-MySQL數(shù)據(jù)庫的操作創(chuàng)建與查看數(shù)據(jù)庫1.創(chuàng)建數(shù)據(jù)庫在MySQL中,創(chuàng)建一個指定名稱的數(shù)據(jù)庫,語法格式如下。CREATEDATABASE數(shù)據(jù)庫名稱;在上述語法格式中,“數(shù)據(jù)庫名”表示需要創(chuàng)建的數(shù)據(jù)庫名稱。數(shù)據(jù)庫命名需要注意以下3點。(1)數(shù)據(jù)庫名稱是唯一的,且區(qū)分大小寫(Windows中不區(qū)分大小寫)。(2)可以由字母、數(shù)字、下畫線、@、#、$組成。(3)不能使用關鍵字。下面創(chuàng)建一個名為school的數(shù)據(jù)庫,具體語句與執(zhí)行結(jié)果如下所示。mysql>CREATEDATABASEschool;QueryOK,1rowaffected(0.01sec)驗證數(shù)據(jù)庫系統(tǒng)中是否創(chuàng)建了名為school的數(shù)據(jù)庫,則需要通過SQL語句“SHOWDATABASES;”查看當前所有數(shù)據(jù)庫,具體語句與執(zhí)行結(jié)果如下所示。mysql>SHOWDATABASES;任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-MySQL數(shù)據(jù)庫的操作查看數(shù)據(jù)庫查看指定數(shù)據(jù)庫的創(chuàng)建語句和屬性信息的語法格式如下。SHOWCREATEDATABASE數(shù)據(jù)庫名稱;任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-MySQL數(shù)據(jù)庫的操作查看數(shù)據(jù)庫查看指定數(shù)據(jù)庫的創(chuàng)建語句和屬性信息的語法格式如下。SHOWCREATEDATABASE數(shù)據(jù)庫名稱;MySQL返回了一個結(jié)果集,其中包含了創(chuàng)建數(shù)據(jù)庫school的SQL語句以及相關的屬性信息,其中“utf8mb4”表示默認的字符集,“utf8mb4_0900_ai_ci”表示校對規(guī)則,“ENCRYPTION='N'”表示加密選項為“N”,即數(shù)據(jù)庫中的數(shù)據(jù)不使用默認的加密方式進行加密任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-使用、修改和刪除數(shù)據(jù)庫使用數(shù)據(jù)庫1.使用數(shù)據(jù)庫使用USE命令指定使用的數(shù)據(jù)庫,語法格式如下。USE數(shù)據(jù)庫名需要注意的是,在SQL語句中,通常以“;”結(jié)尾,而USE不是SQL語句,所以并不強制要求以“;”?!癠SE數(shù)據(jù)庫名”也可以使用“\u數(shù)據(jù)庫名”代替。使用USE命令演示如何將數(shù)據(jù)庫切換到school數(shù)據(jù)庫,具體命令與執(zhí)行結(jié)果如下所示。mysql>USEschoolDatabasechanged2.修改數(shù)據(jù)庫在創(chuàng)建數(shù)據(jù)庫時可選擇使用自定義或默認的字符集。數(shù)據(jù)庫創(chuàng)建完成之后,若想修改數(shù)據(jù)庫的字符編碼,可以使用ALTERDATABASE語句實現(xiàn),語法格式如下。ALTERDATABASE數(shù)據(jù)庫名稱DEFAULTCHARACTERSET編碼方式COLLATE編碼方式_bin;下面演示如何將school數(shù)據(jù)庫的字符編碼修改為gbk,具體語句與執(zhí)行結(jié)果如下所示。mysql>ALTERDATABASEschoolDEFAULTCHARACTERSETgbkCOLLATEgbk_bin;QueryOK,1rowaffected(0.01sec)任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-使用、修改和刪除數(shù)據(jù)庫使用數(shù)據(jù)庫3.刪除數(shù)據(jù)庫刪除數(shù)據(jù)庫的語法格式如下。DROPDATABASE數(shù)據(jù)庫名稱;數(shù)據(jù)庫被刪除后,數(shù)據(jù)庫中所有的數(shù)據(jù)都會被清除,即數(shù)據(jù)庫分配的空間會被收回。下面演示如何刪除school數(shù)據(jù)庫,具體語句與執(zhí)行結(jié)果如下所示。mysql>DROPDATABASEschool;QueryOK,0rowsaffected(0.01sec)1.創(chuàng)建圖書管理系統(tǒng)的數(shù)據(jù)庫booksystem。創(chuàng)管理系統(tǒng)數(shù)據(jù)庫booksystem的具體語句與執(zhí)行結(jié)果如下所示。myREATEDATABASEbooksystem;Qu,1rowaffected(0.01sec)2.加載數(shù)據(jù)庫的驅(qū)動,并創(chuàng)建MySQL數(shù)據(jù)庫連接。在r09程序的src文件夾中創(chuàng)建名為com.example.book的包,該包用于存放圖書管理系統(tǒng)的代碼。然后在com.example.book包中創(chuàng)建JDBCUtils類,在該類中實現(xiàn)加載數(shù)據(jù)庫驅(qū)動,并創(chuàng)建數(shù)據(jù)庫連接3.使用JDBC連接圖書管理系統(tǒng)的數(shù)據(jù)庫booksystem。代碼參考教材中的JDBCUtils.java任務9-1使用JDBC連接圖書管理系統(tǒng)數(shù)據(jù)庫-任務實現(xiàn)02任務9-2實現(xiàn)顯示圖書信息的功能創(chuàng)建與查看數(shù)據(jù)表修改與刪除數(shù)據(jù)表添加數(shù)據(jù)查詢數(shù)據(jù)更新數(shù)據(jù)刪除數(shù)據(jù)任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作創(chuàng)建與查看數(shù)據(jù)表1.創(chuàng)建數(shù)據(jù)表創(chuàng)建數(shù)據(jù)表的過程是規(guī)定數(shù)據(jù)列屬性的過程,同時也是實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)完整性和約束性的過程。創(chuàng)建數(shù)據(jù)表的基本語法格式如下。上述語法格式中,關鍵字的說明如表關鍵字說明表名表示需要創(chuàng)建表的名稱字段名表示數(shù)據(jù)列的名字數(shù)據(jù)類型指的是每列參數(shù)對應的數(shù)值類型,可以為int、char、varchar等表選項代表在創(chuàng)建表時可以單獨指定使用的存儲引擎和默認的字符編碼。例如:ENGINE=InnoDBDEFAULTCHARSET=utf8任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作創(chuàng)建與查看數(shù)據(jù)表1.創(chuàng)建數(shù)據(jù)表創(chuàng)建數(shù)據(jù)表之前需要使用“USE數(shù)據(jù)庫名”切換到要操作的數(shù)據(jù)庫。下面在數(shù)據(jù)庫school中創(chuàng)建一個學生表student,具體步驟如下所示。(1)創(chuàng)建數(shù)據(jù)庫school,具體語句與執(zhí)行結(jié)果如下所示。mysql>CREATEDATABASEschool;QueryOK,1rowaffected(0.01sec)(2)切換至數(shù)據(jù)庫school,具體語句與執(zhí)行結(jié)果如下所示。mysql>USEschool;Databasechanged任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作創(chuàng)建與查看數(shù)據(jù)表1.創(chuàng)建數(shù)據(jù)表student表的表結(jié)構(gòu)如表字段名稱數(shù)據(jù)類型說明stu_idINT(10)學生編號stu_nameVARCHAR(50)學生姓名stu_ageINT(10)學生年齡(3)創(chuàng)建數(shù)據(jù)表student,具體語句與執(zhí)行結(jié)果如下所示。mysql>CREATETABLEstudent(->stu_idINT(10),->stu_nameVARCHAR(50),->stu_ageINT(10)->);QueryOK,0rowsaffected(0.08sec)任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作查看數(shù)據(jù)表(1)使用SHOW語句查看數(shù)據(jù)表,語法格式如下。SHOWCREATETABLE表名;上述語法格式中,查詢的是創(chuàng)建數(shù)據(jù)表時字段的定義信息,該方式能夠以行的方式顯示表結(jié)構(gòu)。下面使用SHOW語句查看student表的表結(jié)構(gòu),具體語句與執(zhí)行結(jié)果如下所示任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作查看數(shù)據(jù)表(2)使用DESCRIBE語句查看數(shù)據(jù)表的字段信息,語法格式如下。DESCRIBE表名;下面使用DESCRIBE語句查看student表的字段信息,具體語句與執(zhí)行結(jié)果如下所示。mysql>DESCRIBEstudent;任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作查看數(shù)據(jù)表(2)使用DESCRIBE語句查看數(shù)據(jù)表的字段信息,語法格式如下。DESCRIBE表名;下面使用DESCRIBE語句查看student表的字段信息,具體語句與執(zhí)行結(jié)果如下所示。mysql>DESCRIBEstudent;任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作修改與刪除數(shù)據(jù)表1.修改數(shù)據(jù)表下面對修改數(shù)據(jù)表的表名、字段名、字段的數(shù)據(jù)類型等表結(jié)構(gòu)信息進行介紹。(1) 修改表名。在同一數(shù)據(jù)庫中,不同的數(shù)據(jù)表需要通過唯一的表名進行區(qū)分,修改數(shù)據(jù)表名稱的語法格式如下。ALTERTABLE原表名RENAME[TO]新表名;上述語法格式中,關鍵字TO是可選的,不會影響SQL語句的執(zhí)行,一般忽略不寫。下面將student表的表名修改為student_01,具體語句與執(zhí)行結(jié)果如下所示。mysql>ALTERTABLEstudentRENAMEstudent_01;QueryOK,0rowsaffected(0.15sec)任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作修改與刪除數(shù)據(jù)表1.修改數(shù)據(jù)表下面對修改數(shù)據(jù)表的表名、字段名、字段的數(shù)據(jù)類型等表結(jié)構(gòu)信息進行介紹。(2) 修改字段。數(shù)據(jù)表中的字段是通過字段名劃分的。當數(shù)據(jù)表中的字段存在變更需求時,用戶可對字段進行修改,修改字段的語法格式如下。ALTERTABLE表名CHANGE原字段名新字段名新數(shù)據(jù)類型;下面將student_01表中的stu_age字段修改為stu_birth,設置數(shù)據(jù)類型為DATE,具體語句與執(zhí)行結(jié)果如下所示。mysql>ALTERTABLEstudent_01CHANGEstu_agestu_birthDATE;QueryOK,0rowsaffected(0.24sec)Records:0Duplicates:0Warnings:0任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作修改與刪除數(shù)據(jù)表1.修改數(shù)據(jù)表下面對修改數(shù)據(jù)表的表名、字段名、字段的數(shù)據(jù)類型等表結(jié)構(gòu)信息進行介紹。(3) 修改字段的數(shù)據(jù)類型。若不需要修改字段名,只需修改字段的數(shù)據(jù)類型,那么可以使用MODIFY關鍵字。使用MODIFY關鍵字修改表中字段的數(shù)據(jù)類型的語法格式如下。ALTERTABLE表名MODIFY字段名數(shù)據(jù)類型;下面將student_01表中的stu_name字段的數(shù)據(jù)類型修改為CHAR(50),具體語句與執(zhí)行結(jié)果如下所示。mysql>ALTERTABLEstudent_01MODIFYstu_nameCHAR(50);QueryOK,0rowsaffected(0.17sec)Records:0Duplicates:0Warnings:0任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作修改與刪除數(shù)據(jù)表1.修改數(shù)據(jù)表下面對修改數(shù)據(jù)表的表名、字段名、字段的數(shù)據(jù)類型等表結(jié)構(gòu)信息進行介紹。(4)添加新字段。數(shù)據(jù)表中就需要添加字段。在MySQL中添加字段的語法格式如下。ALTERTABLE表名ADD新字段名數(shù)據(jù)類型;下面在student_01表中添加class_id字段,設置數(shù)據(jù)類型為int(10),具體語句與執(zhí)行結(jié)果如下所示。mysql>ALTERTABLEstudent_01ADDclass_idint(10);QueryOK,0rowsaffected(0.18sec)Records:0Duplicates:0Warnings:0任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作修改與刪除數(shù)據(jù)表1.修改數(shù)據(jù)表下面對修改數(shù)據(jù)表的表名、字段名、字段的數(shù)據(jù)類型等表結(jié)構(gòu)信息進行介紹。(5) 刪除字段。刪除字段是指將某個字段從數(shù)據(jù)表中刪除,語法格式如下。ALTERTABLE表名DROP字段名;下面將student_01表中class_id字段刪除,具體語句與執(zhí)行結(jié)果如下所示。mysql>ALTERTABLEstudent_01DROPclass_id;QueryOK,0rowsaffected(0.20sec)Records:0Duplicates:0Warnings:0任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作修改與刪除數(shù)據(jù)表1.修改數(shù)據(jù)表下面對修改數(shù)據(jù)表的表名、字段名、字段的數(shù)據(jù)類型等表結(jié)構(gòu)信息進行介紹。(6) 修改字段的排列位置。字段在表中的排列位置在創(chuàng)建表時就已經(jīng)被確定,若要修改字段的排列位置,可以使用ALTERTABLE語句。在MySQL中修改字段排列位置的語法格式如下。ALTERTABLE表名MODIFY字段名1數(shù)據(jù)類型FIRST|AFTER字段名2;任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)表的操作刪除數(shù)據(jù)表1.修改數(shù)據(jù)表使用DROPTABLE語句刪除數(shù)據(jù)表,語法格式如下。DROPTABLE表名;刪除數(shù)據(jù)表時,將會永久刪除表及其所有數(shù)據(jù)。下面將student_01表刪除,具體語句與執(zhí)行結(jié)果如下所示。mysql>DROPTABLEstudent_01;QueryOK,0rowsaffected(0.09sec)任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)的操作添加數(shù)據(jù)1.使用INSERTINTO...VALUES語句標準的INSERT語法要為每個插入值指定相應的字段。通過使用INSERT語句指定所有字段名向表中插入數(shù)據(jù),語法格式如下。INSERTINTO表名(字段名1,字段名2,……)VALUES(值1,值2,……);2.使用INSERTINTO...SET語句通過使用INSERTINTO...SET語句可以指定所有字段名及其對應的值向表中插入數(shù)據(jù),語法格式如下。INSERTINTO表名SET字段名1=值1,字段名2=值2,……;任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)的操作查詢數(shù)據(jù)SELECT語句的基本語法格式如下。SELECT字段名1,字段名2,……,字段名nFROM表名;MySQL中提供了通配符“*”來代替所有的字段名。通配符的SQL語法格式如下。SELECT*FROM表名;任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)的操作更新數(shù)據(jù)使用UPDATE語句更新表中的數(shù)據(jù),語法格式如下。UPDATE表名SET字段名1=值1[,字段名2=值2,……][WHERE條件表達式];上述語法格式中,“字段名”用于指定需要更新的字段名稱,“值”用于表示字段的新值。如果要更新多個字段的值,可以用逗號分隔多個字段和值,“WHERE條件表達式”是可選的,用于指定更新數(shù)據(jù)需要滿足的條件。任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)的操作更新數(shù)據(jù)1.更新全部數(shù)據(jù)當UPDATE語句中不包含WHERE條件語句時,將會對表中的每一行數(shù)據(jù)進行更新。這意味著所有行的特定列將被更新為指定的新值。下面使用UPDATA語句將user表中的字段password的所有值更新為默認密碼000000,具體語句和執(zhí)行結(jié)果如下所示。mysql>UPDATEuserSETpassword='000000';QueryOK,2rowsaffected(0.01sec)Rowsmatched:2Changed:2Warnings:0由上述結(jié)果可知,執(zhí)行完成后提示了“Rowsmatched:2Changed:2Warnings:0”,說明在執(zhí)行UPDATE語句時,有2行數(shù)據(jù)與條件匹配。實際上進行了數(shù)據(jù)修改的行數(shù)為2,并且在執(zhí)行UPDATE語句時產(chǎn)生的警告數(shù)量為0。任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)的操作更新數(shù)據(jù)2.更新部分數(shù)據(jù)在實際應用開發(fā)中,通常需要對數(shù)據(jù)庫表中的特定記錄進行更新,而不是對整個表進行更新操作。使用UPDATE語句結(jié)合WHERE子句可以實現(xiàn)這一目的。下面使用UPDATE語句與WHERE子句將user表中用戶名為lilei的密碼修改為“l(fā)ilei_123”,具體語句和執(zhí)行結(jié)果如下所示。mysql>UPDATEuserSETpassword='lilei_123'WHEREusername='lilei';QueryOK,1rowaffected(0.01sec)Rowsmatched:1Changed:1Warnings:0任務9-2實現(xiàn)顯示圖書信息的功能-MySQL數(shù)據(jù)的操作刪除數(shù)據(jù)DELETE語句是SQL支持的所有數(shù)據(jù)修改語句中常用的語句之一,它用于刪除表中的數(shù)據(jù),語法格式如下。DELETEFROM表名[WHERE條件表達式];1.刪除部分數(shù)據(jù)在實際開發(fā)中,常見的需求是刪除表中的特定數(shù)據(jù)。通常情況下,使用DELETE語句與WHERE子句結(jié)合可以指定刪除數(shù)據(jù)的條件。下面使用DELETE語句與WHERE子句將user表中字段username的值為“l(fā)ilei”的記錄刪除,具體語句和執(zhí)行結(jié)果如下所示。mysql>DELETEFROMuserWHEREusername='lilei';QueryOK,1rowaffected(0.01sec)由上述結(jié)果可知,數(shù)據(jù)刪除完成。2.刪除全部數(shù)據(jù)當DELETE語句中不包含WHERE條件語句時,將會刪除表中的所有數(shù)據(jù)。下面使用DELETE語句將user表中的所有數(shù)據(jù)都刪除,具體語句和執(zhí)行結(jié)果如下所示。mysql>DELETEFROMuser;QueryOK,1rowaffected(0.01sec)1.創(chuàng)建圖書表book,并向表中插入初始數(shù)據(jù)。2.創(chuàng)建圖書信息的實體類BookBean。3.根據(jù)SQL語句對book表中的數(shù)據(jù)進行增、刪、改、查操作,并封裝關閉數(shù)據(jù)庫連接的代碼。4.創(chuàng)建圖書管理系統(tǒng)界面的FXML文件,并創(chuàng)建該文件對應的控制器,在控制器中實現(xiàn)顯示圖書信息的功能。5.加載圖書管理系統(tǒng)界面,并啟動程序。代碼參考教材中的BookBean.javaBookDao.javaSimpleTools.javaBookManagementController.javaMain.java任務9-2實現(xiàn)顯示圖書信息的功能-任務實現(xiàn)運行Main類中的代碼,圖書管理系統(tǒng)界面的運行效果如圖任務9-2實現(xiàn)顯示圖書信息的功能-任務實現(xiàn)03任務9-3實現(xiàn)圖書數(shù)據(jù)的添加、修改和刪除功能執(zhí)行不帶參數(shù)的SQL語句執(zhí)行預編譯的SQL語句結(jié)果集使用JDBC程序查詢學生信息Statement接口用于執(zhí)行不帶參數(shù)的靜態(tài)SQL語句,該接口對象可以通過Connection實例的createStatement()方法獲得,該對象會把靜態(tài)的SQL語句發(fā)送到數(shù)據(jù)庫中編譯執(zhí)行,然后返回數(shù)據(jù)庫的處理結(jié)果。在Statement接口中,提供了3個常用的執(zhí)行SQL語句的方法,如表任務9-3實現(xiàn)圖書數(shù)據(jù)的添加、修改和刪除功能-使用JDBC操作數(shù)據(jù)庫執(zhí)行不帶參數(shù)的SQL語句方法聲明功能描述booleanexecute(Stringsql)用于執(zhí)行SQL語句,該方法的返回值如果為true,表示執(zhí)行的SQL語句有查詢結(jié)果,可通過Statement的getResultSet()方法獲得查詢結(jié)果,否則,沒有查詢結(jié)果intexecuteUpdate(Stringsql)用于執(zhí)行SQL中的insert、update和delete語句。該方法的返回值表示數(shù)據(jù)庫中受該SQL語句影響的記錄條數(shù)ResultSetexecuteQuery(Stringsql)用于執(zhí)行SQL中的select(查詢)語句,該方法返回一個表示查詢結(jié)果的ResultSet對象PreparedStatement接口用于執(zhí)行預編譯的SQL語句,它支持參數(shù)化查詢。預編譯的SQL語句指的是提前完成SQL語句的解析、優(yōu)化和編譯過程,同時,通過占位符和參數(shù)綁定的方式,有效地防止了SQL注入攻擊,提高了數(shù)據(jù)庫操作的執(zhí)行效率和安全性。PreparedStatement是Statement的子接口,該接口擴展了帶有參數(shù)SQL語句的執(zhí)行操作,應用接口中的SQL語句可以使用占位符“?”來代替其參數(shù),然后通過setXxx()方法為SQL語句的參數(shù)賦值。在PreparedStatement接口中提供了一些常用方法,具體如表任務9-3實現(xiàn)圖書數(shù)據(jù)的添加、修改和刪除功能-使用JDBC操作數(shù)據(jù)庫執(zhí)行預編譯的SQL語句方法聲明功能描述intexecuteUpdate()在此PreparedStatement對象中執(zhí)行SQL語句,該語句必須是一個DML語句或者是無返回內(nèi)容的SQL語句,如DDL語句ResultSetexecuteQuery()在此PreparedStatement對象中執(zhí)行SQL查詢,該方法返回的是ResultSet對象voidsetInt(intparameterIndex,intx)將指定參數(shù)設置為給定的int值voidsetFloat(intparameterIndex,floatx)將指定參數(shù)設置為給定的float值voidsetString(intparameterIndex,Stringx)將指定參數(shù)設置為給定的String值voidsetDate(intparameterIndex,Datex)將指定參數(shù)設置為給定的Date值voidaddBatch()將一組參數(shù)添加到此PreparedStatement對象的批處理命令中voidsetCharacterStream(intparameterIndex,java.io.Readerreader,intlength)將指定的輸入流寫入數(shù)據(jù)庫的文本字段voidsetBinaryStream(intparameterIndex,java.io.InputStreamx,intlength)將二進制的輸入流數(shù)據(jù)寫入到二進制字段中ResultSet接口用于保存JDBC執(zhí)行查詢時返回的結(jié)果集,該結(jié)果集封裝在一個邏輯表格中。在ResultSet接口內(nèi)部有一個指向表格數(shù)據(jù)行的游標(或指針),ResultSet對象初始化時,游標在表格的第一行之前,調(diào)用next()方法可將游標移動到下一行。如果下一行沒有數(shù)據(jù),則返回false。在應用程序中經(jīng)常使用next()方法作為while循環(huán)的條件來迭代ResultSet結(jié)果集。ResultSet接口中的常用方法如表任務9-3實現(xiàn)圖書數(shù)據(jù)的添加、修改和刪除功能-使用JDBC操作數(shù)據(jù)庫結(jié)果集方法聲明功能描述StringgetString(intcolumnIndex)獲取指定字段的String類型的值,參數(shù)columnIndex代表字段的索引StringgetString(StringcolumnName)獲取指定字段的String類型的值,參數(shù)columnName代表字段的名稱intgetInt(intcolumnIndex)獲取指定字段的int類型的值,參數(shù)columnIndex代表字段的索引intgetInt(StringcolumnName)獲取指定字段的int類型的值,參數(shù)columnName代表字段的名稱DategetDate(intcolumnIndex)獲取指定字段的Date類型的值,參數(shù)columnIndex代表字段的索引DategetDate(StringcolumnName)獲取指定字段的Date類型的值,參數(shù)columnName代表字段的名稱booleannext()將游標從當前位置向下移一行booleanabsolute(introw)將游標移動到此ResultSet對象的指定行voidafterLast()將游標移動到此ResultSet對象的末尾,即最后一行之后voidbeforeFirst()將游標移動到此ResultSet對象的開頭,即第一行之前booleanprevious()將游標移動到此ResultSet對象的上一行booleanlast()將游標移動到此ResultSet對象的最后一行1.創(chuàng)建數(shù)據(jù)庫與數(shù)據(jù)表在MySQL數(shù)據(jù)庫中創(chuàng)建一個名為jdbc的數(shù)據(jù)庫,然后在該數(shù)據(jù)庫中創(chuàng)建一個名為student的表,創(chuàng)建數(shù)據(jù)庫和表的SQL語句如下。CREATEDATABASEjdbc;USEjdbc;CREATETABLEstudent( idINTPRIMARYKEYAUTO_INCREMENT, NAMEVARCHAR(40),ageINT, sexVARCHAR(2), emailVARCHAR(60));任務9-3實現(xiàn)圖書數(shù)據(jù)的添加、修改和刪除功能-JDBC程序查詢學生信息創(chuàng)建數(shù)據(jù)庫與數(shù)據(jù)表數(shù)據(jù)庫和表創(chuàng)建成功后,再向student表中插入4條數(shù)據(jù),插入的SQL語句如下所示。INSERTINTOstudent(NAME,age,sex,email)VALUES('王明',11,'男','wangming@163.com'),('李雷',12,'男','lilei@'),('張紅',13,'女','zhanghong@126.com'),('李四',11,'男','lisi@126.com');任務9-3實現(xiàn)圖書數(shù)據(jù)的添加、修改和刪除功能-JDBC程序查詢學生信息創(chuàng)建數(shù)據(jù)庫與數(shù)據(jù)表添加完學生信息數(shù)據(jù)之后,使用SELECT語句查詢student表中的數(shù)據(jù)是否添加成功,查詢語句如下所示。select*fromstudent;執(zhí)行完查詢語句后,執(zhí)行結(jié)果如圖任務9-3實現(xiàn)圖書數(shù)據(jù)的添加、修改和刪除功能-JDBC程序查詢學生信息創(chuàng)建數(shù)據(jù)庫與數(shù)據(jù)表如例9-1所示,在Chapter09程序的com.example.jdbc包中創(chuàng)建名為ExampleJDBC的類,在該類中讀取student表中的數(shù)據(jù),并將結(jié)果輸出到控制臺中,具體代碼ExampleJDBC.java任務9-3實現(xiàn)圖書數(shù)據(jù)的添加、修改和刪除功能-JDBC程序查詢學生信息查詢學生信息表student……8try{9 //1.加載數(shù)據(jù)庫驅(qū)動
10 Class.forName("com.mysql.cj.jdbc.Driver");11 //2.通過DriverManager獲取數(shù)據(jù)庫連接
12 Stringurl="jdbc:mysql://localhost:3306/jdbc";13 Stringusername="root";14 Stringpassword="root123";15 conn=DriverManager.getConnection(url,username,password);16 //3.通過Connection對象獲取Statement對象
17 stmt=conn.createStatement();18 //4.使用Statement執(zhí)行SQL語句
19 Stringsql="select*fromstudent";20 rs=stmt.exec
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 立筒倉課程設計
- 繪畫療法課程設計
- 物流工程課程設計slp方法食堂
- 活動義齒網(wǎng)絡課程設計
- 混凝土排架課程設計
- 電子沙盤課程設計
- 紅色教育課程設計理念
- 空城計課程設計
- 2024年湖南省安全員-B證考試題庫附答案
- 2024年山西省安全員-B證(項目經(jīng)理)考試題庫
- 商業(yè)銀行會計實務培訓
- 自動洗衣機行星齒輪減速器的設計-畢業(yè)論文
- 履帶吊驗收表
- 世界地理高中世界地理填圖練習
- 連續(xù)梁施工質(zhì)量通病及防治
- 機械滑臺的控制
- 2018-2019學年第一學期西城小學三年級數(shù)學期末試題
- GB-T-12137-2015-氣瓶氣密性試驗方法
- 煙葉種植及加工項目可行性研究報告寫作范文
- 員工知識產(chǎn)權(quán)歸屬協(xié)議
- 八卦象數(shù)療法常見配方最新版
評論
0/150
提交評論