版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章JDBC數(shù)據(jù)庫(kù)開發(fā)6.1創(chuàng)建數(shù)據(jù)庫(kù)連接6.2查詢記錄
(P163_03.jsp)
分頁(yè)顯示記錄集(P169_04.jsp)
創(chuàng)建搜索頁(yè)(P174_06.jsp)
創(chuàng)建主/詳細(xì)頁(yè)(P177_08ab.jsp)6.3添加記錄(P184-_10.jsp)6.4更新記錄(P192-_12ab.jsp)6.5刪除記錄(P202-_14.jsp)JavaDatabaseConnectivity,Java數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)是以一定的方式組織并存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)設(shè)備上、能夠?yàn)椴煌脩羲蚕淼?、與應(yīng)用程序彼此獨(dú)立的相互關(guān)聯(lián)的數(shù)據(jù)的集合。基本的數(shù)據(jù)模型有三種:層次模型系統(tǒng)、網(wǎng)絡(luò)模型系統(tǒng)和關(guān)系模型系統(tǒng)。關(guān)系模型系統(tǒng)具有數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單靈活、易學(xué)易懂且數(shù)學(xué)基礎(chǔ)雄厚等特點(diǎn),發(fā)展到現(xiàn)在已成為數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)。常見的中小型數(shù)據(jù)庫(kù)系統(tǒng)有Access和MySQL,大型數(shù)據(jù)庫(kù)系統(tǒng)有SQLServer和Oracle。
數(shù)據(jù)庫(kù)介紹
關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語言SQLSQL(structuredQueryLanguage)結(jié)構(gòu)化查詢語言是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語言。1974年由Boyce和Chamberlin提出,1979年IBM公司首次在其關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)SystemR上實(shí)現(xiàn)了SQL。1986年由ANSI批準(zhǔn)成為美國(guó)國(guó)家標(biāo)準(zhǔn)。隨即由ISO批準(zhǔn)成為國(guó)際標(biāo)準(zhǔn)。歷經(jīng)兩次修改(SQL-89,SQL-92)目前,幾乎所有的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)都支持SQL。SQL的特點(diǎn)功能一體化集DDL,DML,DCL于一身高度的非過程特性用戶只需告訴DBMS干什么,而不必告訴它應(yīng)該怎么干。操作的對(duì)象和結(jié)果均為集合兩種使用方式,統(tǒng)一的語法結(jié)構(gòu)。交互式,嵌入式易學(xué)易用語法簡(jiǎn)單,接近英語口語,完成核心功能的動(dòng)詞只有8個(gè)。create,drop;select,insert,update,delete;grant(授權(quán)),revoke(撤銷授權(quán))SQL的數(shù)據(jù)定義語句SQL的數(shù)據(jù)定義包括三個(gè)部分:定義基本表,定義視圖,定義索引。定義基本表的相關(guān)語句:createtable,droptable,altertable定義視圖的相關(guān)語句:createview,dropview定義索引的相關(guān)語句:createindex,dropindexSQL根據(jù)其功能,可以歸納成為以下3種:DataDefinitionLanguage(DDL):這一類的SQL語法,用以進(jìn)行數(shù)據(jù)庫(kù)結(jié)構(gòu)的維護(hù)操作,例如建立數(shù)據(jù)表、調(diào)整字段名稱、刪除現(xiàn)存數(shù)據(jù)表等等。DataManipulationLanguae(DML):提供數(shù)據(jù)庫(kù)內(nèi)容、數(shù)據(jù)的搜尋操作,甚至修改數(shù)據(jù)內(nèi)容等等。DataControlLanguage(DCL):提供數(shù)據(jù)庫(kù)安全的相關(guān)SQL語句,例如設(shè)定用戶權(quán)限,特定數(shù)據(jù)內(nèi)容操作的安全規(guī)范等等。Sqlserver2000Sqlserver2000:是一個(gè)軟件,微軟公司于2000年8月推出的新一代的關(guān)系型網(wǎng)絡(luò)數(shù)據(jù)庫(kù)管理系統(tǒng),一個(gè)由微軟開發(fā)的數(shù)據(jù)庫(kù)管理系統(tǒng),時(shí)下用的非常普遍。四個(gè)版本:
professional專業(yè)/標(biāo)準(zhǔn)版(適合用作小型工作組和部門數(shù)據(jù)庫(kù)服務(wù)器)
enterprise企業(yè)版---適合作為整個(gè)企業(yè)的數(shù)據(jù)庫(kù)服務(wù)器常用【不能安裝在專業(yè)版系統(tǒng)上】personal個(gè)人版(用于在客戶機(jī)上儲(chǔ)存少量數(shù)據(jù))
develop開發(fā)版使用結(jié)構(gòu)示意圖網(wǎng)頁(yè)姓名密碼Email提交網(wǎng)頁(yè)服務(wù)器數(shù)據(jù)庫(kù)12表:人員姓名密碼EmailAccessSqlserver2000姓名密碼Email張三12321123@12.c姓名密碼234@12.dl設(shè)計(jì)視圖內(nèi)容視圖Access與Sqlserver2000的比較數(shù)據(jù)庫(kù)某表1表2表3Access數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)某1表1表2表3數(shù)據(jù)庫(kù)某2表1表2表3數(shù)據(jù)庫(kù)服務(wù)器某Sqlserver2000數(shù)據(jù)庫(kù)服務(wù)器Access:小型網(wǎng)站,同時(shí)訪問人數(shù)不能超過1000。訪問速度慢Sqlserver2000:大型網(wǎng)站,企業(yè)級(jí)的數(shù)據(jù)存取應(yīng)用。訪問速度快。Sqlserver2000的企業(yè)管理器數(shù)據(jù)庫(kù)服務(wù)器數(shù)據(jù)庫(kù)數(shù)據(jù)表
數(shù)據(jù)庫(kù)主要由數(shù)量不等的數(shù)據(jù)表所組成,數(shù)據(jù)表本身用來儲(chǔ)存特定內(nèi)容的數(shù)據(jù)并建立彼此間的關(guān)聯(lián)。
數(shù)據(jù)庫(kù)ODBC
利用程序連接數(shù)據(jù)庫(kù)之前,首先必須在Windows控制臺(tái)里的ODBC數(shù)據(jù)來源選項(xiàng)中,依所使用的數(shù)據(jù)庫(kù)種類來選擇其專屬的ODBC驅(qū)動(dòng)程序,并指定ODBC數(shù)據(jù)庫(kù)的來源。JDBC驅(qū)動(dòng)程序
JDBC(JavaDataBaseConnectivity)是使用Java所編寫的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,因此具有跨平臺(tái)的特性,Java程序或者JSP程序都必須通過此類的驅(qū)動(dòng)程序來連接數(shù)據(jù)庫(kù)。下列網(wǎng)址提供特定特定數(shù)據(jù)庫(kù)系統(tǒng)的專署JDBC驅(qū)動(dòng)程序。/products/jdbc/drivers
Msaccess新建數(shù)據(jù)庫(kù)(1)
Msaccess新建數(shù)據(jù)庫(kù)
(2)Msaccess新建數(shù)據(jù)庫(kù)
(3)MSACCESS數(shù)據(jù)表結(jié)構(gòu)示例(1)字段說明字段說明ID作者編號(hào)eMail作者電子郵件Name作者姓名Phone作者連絡(luò)電話Sex作者性別Address作者連絡(luò)地址MSACCESS數(shù)據(jù)表結(jié)構(gòu)示例(2)字段本身包含幾個(gè)要素,分別是“字段名稱”、“數(shù)據(jù)類型”和“說明”這3個(gè)部份。字段名稱、數(shù)據(jù)類型代表一個(gè)特定字段的名稱以及該字段所能儲(chǔ)存的數(shù)據(jù)內(nèi)容。說明是存放這個(gè)字段的說明,這一部分能夠省略。MSACCESS數(shù)據(jù)表結(jié)構(gòu)示例(3)數(shù)據(jù)類型說明文本用以儲(chǔ)存一般字符類型的數(shù)據(jù)備注
儲(chǔ)存大量的文字?jǐn)?shù)據(jù),例如備注類型的數(shù)據(jù)內(nèi)容數(shù)字
儲(chǔ)存數(shù)字類型的數(shù)據(jù),例如整數(shù)浮點(diǎn)數(shù)等等日期/時(shí)間儲(chǔ)存時(shí)間日期等類型的數(shù)據(jù)內(nèi)容貨幣
儲(chǔ)存需要高精確度,使用于貨幣金額計(jì)算的數(shù)據(jù)自動(dòng)編號(hào)使用于本身作為編號(hào)的字段,例如訂單號(hào)碼,于每次新增一條數(shù)據(jù)的時(shí)候,自動(dòng)新增號(hào)碼是/否儲(chǔ)存TRUE或是FALSE等布爾類型數(shù)據(jù)MSACCESS數(shù)據(jù)類型
字段類型名稱數(shù)據(jù)類型
說明數(shù)字byte字節(jié)整數(shù)smallint整數(shù)int長(zhǎng)整數(shù)single單精準(zhǔn)數(shù)double雙精準(zhǔn)數(shù)文本char(n)記錄最大為n個(gè)字符的數(shù)據(jù),n最大值為255備注longtext字符串?dāng)?shù)據(jù)類型,可記錄最大字符串長(zhǎng)度為64k日期/時(shí)間date日期數(shù)據(jù)自動(dòng)編號(hào)counter字段中的數(shù)值會(huì)自動(dòng)遞增MSACCESS字段屬性
字段屬性說明primarykey設(shè)定字段為主索引unique設(shè)定主索引字段的值不可重復(fù)notnull設(shè)定字段內(nèi)容不允許為空MSACCESS連接數(shù)據(jù)庫(kù)加載JDBC驅(qū)動(dòng)程序
CLASS.FORNAME("SUN.JDBC.ODBC.JDBCODBCDRIVER“)連接數(shù)據(jù)庫(kù)
CONNECTIONOBJCONNECTION=DRIVERMANAGER.GETCONNECTION("JDBC:ODBC:DATABASE","USERID","USERPWD")關(guān)閉數(shù)據(jù)庫(kù)
OBJCONNECTION.CLOSE()SQLSERVER盡管SQL語言是一種標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫(kù)語言,但不同廠商的DBMS所支持的SQL仍有一些差異。這主要是因?yàn)楦鲝S商根據(jù)自己的需要對(duì)SQL作了一些擴(kuò)充。本課程在介紹操作實(shí)例時(shí)使用微軟公司的SQLSERVER。它在SQL語法,數(shù)據(jù)庫(kù)功能上與SYBASE公司的SYBASESQLSERVER基本相同。既有可以在單機(jī)上運(yùn)行的版本,也有可以在網(wǎng)絡(luò)上運(yùn)行的版本。是廣泛使用的大型數(shù)據(jù)庫(kù)管理系統(tǒng)之一。SQLSERVER的數(shù)據(jù)類型字符數(shù)據(jù)字符數(shù)據(jù)由字母、符號(hào)和數(shù)字組成。例如,有效字符數(shù)據(jù)包括“928”、“JOHNSON”和“(0*&(%B99NH
JKJ”。在MICROSOFT?SQLSERVER?2000中,字符數(shù)據(jù)使用CHAR、VARCHAR和TEXT數(shù)據(jù)類型存儲(chǔ)。當(dāng)列中各項(xiàng)的字符長(zhǎng)度數(shù)可變時(shí)可用VARCHAR類型,但任何項(xiàng)的長(zhǎng)度都不能超過8KB。當(dāng)列中各項(xiàng)為同一固定長(zhǎng)度時(shí)使用CHAR類型(最多8KB)。TEXT數(shù)據(jù)類型的列可用于存儲(chǔ)大于8KB的ASCII字符。SQLSERVER的數(shù)據(jù)類型--數(shù)字?jǐn)?shù)據(jù)之整數(shù)數(shù)據(jù)整型數(shù)據(jù)由負(fù)整數(shù)或正整數(shù)組成,如-15、0、5和2509。在Microsoft?SQLServer?2000中,整型數(shù)據(jù)使用bigint、int、smallint和tinyint數(shù)據(jù)類型存儲(chǔ)。bigint數(shù)據(jù)類型可存儲(chǔ)的數(shù)字范圍比int數(shù)據(jù)類型廣。int數(shù)據(jù)類型比smallint數(shù)據(jù)類型的存儲(chǔ)范圍大,而smallint的數(shù)值范圍又比tinyint類型大。使用bigint數(shù)據(jù)類型存儲(chǔ)從-2^63(-9223372036854775808)到2^63-1(9223372036854775807)范圍內(nèi)的數(shù)字。存儲(chǔ)大小為8個(gè)字節(jié)。int數(shù)據(jù)類型的存儲(chǔ)范圍是-2,147,483,648至2,147,483,647(每個(gè)值需4個(gè)字節(jié)的存儲(chǔ)空間)。smallint數(shù)據(jù)類型的存儲(chǔ)范圍只有-32,768至32,767(每個(gè)值需2個(gè)字節(jié)的存儲(chǔ)空間),tinyint數(shù)據(jù)類型只能存儲(chǔ)0至255范圍內(nèi)的數(shù)字(每個(gè)值需1個(gè)字節(jié)的存儲(chǔ)空間)。SQLSERVER的數(shù)據(jù)類型--數(shù)字?jǐn)?shù)據(jù)之小數(shù)數(shù)據(jù)Decimal數(shù)據(jù)包含存儲(chǔ)在最小有效數(shù)上的數(shù)據(jù)。在SQLServer中,小數(shù)數(shù)據(jù)使用decimal或numeric數(shù)據(jù)類型存儲(chǔ)。存儲(chǔ)decimal或numeric數(shù)值所需的字節(jié)數(shù)取決于該數(shù)據(jù)的數(shù)字總數(shù)和小數(shù)點(diǎn)右邊的小數(shù)位數(shù)。例如,存儲(chǔ)數(shù)值19283.29383比存儲(chǔ)1.1需要更多的字節(jié)。在SQLServer中,numeric數(shù)據(jù)類型等價(jià)于decimal數(shù)據(jù)類型。近似數(shù)字(浮點(diǎn))數(shù)據(jù)包括按二進(jìn)制計(jì)數(shù)系統(tǒng)所能提供的最大精度保留的數(shù)據(jù)。在SQLServer中,近似數(shù)字?jǐn)?shù)據(jù)以float和real數(shù)據(jù)類型存儲(chǔ)。例如,分?jǐn)?shù)1/3表示成小數(shù)形式為0.333333(循環(huán)小數(shù)),該數(shù)字不能以近似小數(shù)數(shù)據(jù)精確表示。因此,從SQLServer獲取的值可能并不準(zhǔn)確代表存儲(chǔ)在列中的原始數(shù)據(jù)。又如,以.3,.6,.7結(jié)尾的浮點(diǎn)數(shù)均為數(shù)字近似值。SQLSERVER的數(shù)據(jù)類型--日期和時(shí)間數(shù)據(jù)日期和時(shí)間數(shù)據(jù)由有效的日期或時(shí)間組成。例如,有效日期和時(shí)間數(shù)據(jù)既包括"4/01/9812:15:00:00:00PM",也包括"1:28:29:15:01AM8/17/98"。在Microsoft?SQLServer?2000中,日期和時(shí)間數(shù)據(jù)使用datetime和smalldatetime數(shù)據(jù)類型存儲(chǔ)。使用datetime數(shù)據(jù)類型存儲(chǔ)從1753年1月1日至9999年12月31日的日期(每個(gè)數(shù)值要求8個(gè)字節(jié)的存儲(chǔ)空間)。使用smalldatetime數(shù)據(jù)類型存儲(chǔ)從1900年1月1日至2079年6月6日的日期(每個(gè)數(shù)值要求4個(gè)字節(jié)的存儲(chǔ)空間)。SQLSERVER的數(shù)據(jù)類型--二進(jìn)制數(shù)據(jù)二進(jìn)制數(shù)據(jù)由十六進(jìn)制數(shù)表示。例如,十進(jìn)制數(shù)245等于十六進(jìn)制數(shù)F5。在Microsoft?SQLServer?2000中,二進(jìn)制數(shù)據(jù)使用binary、varbinary和image數(shù)據(jù)類型存儲(chǔ)。指派為binary數(shù)據(jù)類型的列在每行中都是固定的長(zhǎng)度(最多為8KB)。指派為varbinary數(shù)據(jù)類型的列,各項(xiàng)所包含的十六進(jìn)制數(shù)字的個(gè)數(shù)可以不同(最多為8KB)。image數(shù)據(jù)列可以用來存儲(chǔ)超過8KB的可變長(zhǎng)度的二進(jìn)制數(shù)據(jù),如MicrosoftWord文檔、MicrosoftExcel電子表格、包含位圖的圖像、圖形交換格式(GIF)文件和聯(lián)合圖像專家組(JPEG)文件。除非數(shù)據(jù)長(zhǎng)度超過8KB時(shí)用image數(shù)據(jù)類型存儲(chǔ),一般宜用varbinary類型來存儲(chǔ)二進(jìn)制數(shù)據(jù)。建議列寬的定義不超過所存儲(chǔ)的二進(jìn)制數(shù)據(jù)可能的最大長(zhǎng)度。SQLSERVER的數(shù)據(jù)類型--貨幣數(shù)據(jù)貨幣數(shù)據(jù)表示正的或負(fù)的貨幣值。在Microsoft?SQLServer?2000中使用money和smallmoney數(shù)據(jù)類型存儲(chǔ)貨幣數(shù)據(jù)。貨幣數(shù)據(jù)存儲(chǔ)的精確度為四位小數(shù)??梢源鎯?chǔ)在money數(shù)據(jù)類型中的值的范圍是-922,337,203,685,477.5808至+922,337,203,685,477.5807(需8個(gè)字節(jié)的存儲(chǔ)空間)??梢源鎯?chǔ)在smallmoney數(shù)據(jù)類型中的值的范圍是-214,748.3648至214,748.3647(需4個(gè)字節(jié)的存儲(chǔ)空間)。如果數(shù)值超過了上述范圍,則可使用decimal數(shù)據(jù)類型代替。SQLServer之SQLServerEnterpriseManagerSQLServer企業(yè)管理器是Microsoft?SQLServer?2000的主要管理工具,它提供了一個(gè)遵從Microsoft管理控制臺(tái)(MMC)的用戶界面,使用戶得以:定義運(yùn)行SQLServer的服務(wù)器組。將個(gè)別服務(wù)器注冊(cè)到組中。為每個(gè)已注冊(cè)的服務(wù)器配置所有SQLServer選項(xiàng)在每個(gè)已注冊(cè)的服務(wù)器中創(chuàng)建并管理所有SQLServer數(shù)據(jù)庫(kù)、對(duì)象、登錄、用戶和權(quán)限。在每個(gè)已注冊(cè)的服務(wù)器上定義并執(zhí)行所有SQLServer管理任務(wù)。通過喚醒調(diào)用SQL查詢分析器,交互地設(shè)計(jì)并測(cè)試SQL語句、批處理和腳本。喚醒調(diào)用為SQLServer定義的各種向?qū)?。SQLServer之查詢分析器Microsoft?SQLServer?2000SQL查詢分析器是一種圖形工具,可以使用它進(jìn)行以下操作:創(chuàng)建查詢和其它SQL腳本,并針對(duì)SQLServer數(shù)據(jù)庫(kù)執(zhí)行它們。(“查詢”窗口)由預(yù)定義腳本快速創(chuàng)建常用數(shù)據(jù)庫(kù)對(duì)象。(模板)快速?gòu)?fù)制現(xiàn)有數(shù)據(jù)庫(kù)對(duì)象。(對(duì)象瀏覽器腳本功能)在參數(shù)未知的情況下執(zhí)行存儲(chǔ)過程。(對(duì)象瀏覽器過程執(zhí)行功能)調(diào)試存儲(chǔ)過程。(T-SQL調(diào)試程序)調(diào)試查詢性能問題。(顯示執(zhí)行計(jì)劃、顯示服務(wù)器跟蹤、顯示客戶統(tǒng)計(jì)、索引優(yōu)化向?qū)В┰跀?shù)據(jù)庫(kù)內(nèi)定位對(duì)象(對(duì)象搜索功能),或查看和使用對(duì)象。(對(duì)象瀏覽器)快速插入、更新或刪除表中的行。(“打開表”窗口)為常用查詢創(chuàng)建鍵盤快捷方式。(自定義查詢快捷方式功能)向“工具”菜單添加常用命令。(自定義“工具”菜單功能)SQLSERVER創(chuàng)建數(shù)據(jù)庫(kù)用SQLServerEnterpriseManager建立學(xué)生數(shù)據(jù)庫(kù)testdb.db。用查詢分析器建立學(xué)生數(shù)據(jù)庫(kù)testdb.dbusemastergocreate
databasetestdbon(name=testDB_dat,filename='D:\data\testdbdat.mdf',size=1,maxsize=5,filegrowth=1)Logon(name='testDB_log',filename='D:\data\testdblog.ldf',size=1mb,maxsize=5mb,filegrowth=1mb)go基本表的定義createtable命令語法:createtable
[database_name.[owner].|owner.]table_name
({<column_definition>|column_nameascomputed_column_expression
|<table_constraint>::=[constraintconstraint_name]}
|[{primarykey|unique}[,...n]
)[on{filegroup|default}][textimage_on{filegroup|default}]參數(shù)說明column-definition:column-namedata-type[notnull][defaultdefault-value]基本表的定義(續(xù)一)column-constraint:unique|primarykey|referencestable-name[(column-name)][actions]|check(condition)default-value:string|globalvariable|number|autoincrement|currentdate|currenttime|currenttimestamp|null|user|(constant-expression)基本表的定義(續(xù)二)table-constraint:unique(column-name,...)|primarykey(column-name,...)|check(condition)|foreign-key-constraintforeign-key-constraint:[notnull]foreignkey[role-name][(column-name,...)]referencestable-name[(column-name,...)][actions][checkoncommit]action:on{update|delete}{cascade|setnull|setdefault|restrict}基本表的定義舉例定義表系(department),表名為d,包括系編號(hào)d#和系名dn,以系編號(hào)為主碼。createtabled(d#char(2)notnull,dnchar(20),primarykey(d#))定義表學(xué)生(student),表名為s,包括學(xué)號(hào)s#、姓名sn、所在系的編號(hào)d#、和年齡sa。以學(xué)號(hào)為主碼,系編號(hào)為外部碼,引用表d中的系編號(hào)。createtables(s#char(8)notnullprimarykey,snchar(8)notnull,d#char(2)notnullreferencesd(d#),saint)基本表的定義舉例定義表課程(course),表名為c,包括課程編號(hào)c#,課程名cn,先修課程編號(hào)pc#。課程編號(hào)為主碼。createtablec(c#char(2)notnull,cnchar(20)notnull,pc#char(2),primarykey(c#));定義表“學(xué)生選課”,表名為sc,包括學(xué)號(hào)s#、課程號(hào)c#、成績(jī)g。以學(xué)號(hào)和課程編號(hào)為主碼。學(xué)號(hào)為外部碼,引用表s中的學(xué)號(hào)。課程編號(hào)為外部碼,引用表c中的課程編號(hào)。
createtablesc(s#char(8)notnullreferencess(s#),c#char(2)notnullreferencesc(c#),gint,primarykey(s#,c#));基本表的刪除語法:droptable[owner.]tablename舉例:刪除表scdroptablescQuestion:若在刪除表sc前刪除表c,則會(huì)發(fā)生錯(cuò)誤。為什么?基本表的修改(AlterTable)通過更改、添加、除去列和約束,或者通過啟用或禁用約束和觸發(fā)器來更改表的定義。altertabletable{[altercolumncolumn_name
{
new_data_type[(precision[,scale])]
[collate<collation_name>]
[null|notnull]
|{add|drop}rowguidcol}]
|add
{[<column_definition>]
|column_nameascomputed_column_expression
}[,...n]
|[withcheck|withnocheck]add
{<table_constraint>}[,...n]
|drop
{[constraint]constraint_name
|columncolumn}[,...n]
|{check|nocheck}constraint
{all|constraint_name[,...n]}
|{enable|disable}trigger
{all|trigger_name[,...n]}}基本表的修改舉例在表s中增加一列生日(birthday),類型為日期時(shí)間型:altertablesaddbirthdaydatetimenull修改課程表,使課程名的長(zhǎng)度為30個(gè)字節(jié)。altertablecaltercolumncnchar(30)索引的定義(createindex)create[unique][clustered|nonclustered]indexindex_name
on{table|view}(column[asc|desc][,...n])[with<index_option>[,...n]][onfilegroup]<index_option>::=
{pad_index|
fillfactor=fillfactor|
ignore_dup_key|
drop_existing|
statistics_norecompute|
sort_in_tempdb
}
本命令在指定的表及指定的列上建立索引,索引由dbms自動(dòng)使用以提高對(duì)數(shù)據(jù)庫(kù)的查詢速度和對(duì)查詢結(jié)果排序的速度。索引舉例設(shè)有一職工表employee包含兩列:姓emp_lname和名emp_fname。下例建立一個(gè)含這兩個(gè)列的索引。createindexemployee_name_indexonemployee(emp_lname,emp_fname)在表s為列d#建立索引:createindexdepartment_id_indexons(d#)查看索引使用存儲(chǔ)過程sp_helpindex報(bào)告有關(guān)表或視圖上索引的信息。語法sp_helpindex[@objname=]'name'參數(shù)[@objname=]'name'是當(dāng)前數(shù)據(jù)庫(kù)中表或視圖的名稱。name的數(shù)據(jù)類型為nvarchar(776),沒有默認(rèn)值。例如:查看學(xué)生表s上的索引sp_helpindexs索引的刪除語法:dropindex'table.index|view.index'[,...n]例:刪除索引employee_name_indexdropindexemployee.employee_name_index刪除索引department_id_indexdropindexs.department_id_indexSQL的數(shù)據(jù)操縱語句SQL的數(shù)據(jù)操縱語句是指追加、修改、刪除表中記錄的有關(guān)語句。我們將它與數(shù)據(jù)查詢語句分開,一方面是因?yàn)椴倏v語句會(huì)改變數(shù)據(jù)庫(kù)中的內(nèi)容,查詢語句不會(huì)。另一方面是因?yàn)閿?shù)據(jù)操縱語句的語法相對(duì)較簡(jiǎn)單。然而,為了查看數(shù)據(jù)操縱的結(jié)果,我們先簡(jiǎn)單介紹數(shù)據(jù)查詢語句的最基本形式。簡(jiǎn)單的數(shù)據(jù)查詢語句select語法:select{*|selectlist}fromtablename舉例:查看學(xué)生表中的記錄select*froms追加記錄(元組)insert語法:格式1(作用:插入一行到指定的表中)insertinto[owner.]table-name[(column-name,...)]values(expression|default,...)格式2(作用:從其他表中插入一行或多行記錄)insertinto[owner.]table-name[(column-name,...)]select-statementinsert語句舉例插入記錄到表d中insertintod(d#,dn)values('01','計(jì)算機(jī)系');insertintod(d#,dn)values('02','經(jīng)貿(mào)學(xué)院');insertintod(d#,dn)values(‘03’,‘化工學(xué)院’);insertintosvalues('s01','王芳','01',20,null)插入記錄到表c中insertintoc(c#,cn,pc#)values('c1','計(jì)算機(jī)基礎(chǔ)',NULL);insertintoc(c#,cn,pc#)values('c2','數(shù)據(jù)庫(kù)原理','c1');insertintoc(c#,cn,pc#)values('c3','英語',NULL);insertintoc(c#,cn,pc#)values('c4','高等數(shù)學(xué)',NULL);修改記錄內(nèi)容(Update)語法:updatetable-listsetcolumn-name={expression|subquery},...[wheresearch-condition]作用:將指定表table-list中符合條件search-condition的行的相應(yīng)列column-name修改為表達(dá)式expression的值或子查詢subquery的值。將所有學(xué)生的年齡增加1歲:updatessetsa=sa+1將學(xué)生li的年齡增加1歲:updatessetsa=sa+1wheresn=‘li’刪除記錄delete語法:deletefrom[owner.]table-name[wheresearch-condition]作用:刪除指定表table-name中,符合條件search-condition的記錄。刪除表s中,年齡大于25歲的學(xué)生。deletefromswheresa>25刪除表sc中的所有記錄:deletefromscJDBC簡(jiǎn)介
JDBC全稱為JavaDataBaseConnectivitystandard,它是一種可用于執(zhí)行SQL語句的JavaAPI。它由一些Java語言編寫的類和界面組成,JDBC提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫(kù)應(yīng)用程序。1、JDBC的任務(wù)(簡(jiǎn)單地說,JDBC能完成下列三件事) (1)同數(shù)據(jù)庫(kù)建立連接(2)向數(shù)據(jù)庫(kù)發(fā)送SQL語句 (3)處理數(shù)據(jù)庫(kù)返回的結(jié)果2、JDBC支持兩層模型,也支持三層模型訪問數(shù)據(jù)庫(kù)。
6.1.1JDBC驅(qū)動(dòng)程序類型1、JDBC-ODBC橋2、Java到本地API3、JDBC網(wǎng)絡(luò)純Java驅(qū)動(dòng)程序4、Java到本地?cái)?shù)據(jù)庫(kù)協(xié)議jsp運(yùn)用sql創(chuàng)建web界面
JDBC實(shí)現(xiàn)數(shù)據(jù)庫(kù)的操作的步驟JDBCAPI是通用接口,在與數(shù)據(jù)庫(kù)連接時(shí)先要加載。加載驅(qū)動(dòng)程序有很多方法,最常用的就是先把驅(qū)動(dòng)程序類溶解到內(nèi)存中,作為“當(dāng)前”驅(qū)動(dòng)程序。內(nèi)存中可以有多個(gè)驅(qū)動(dòng)程序,但只有現(xiàn)在加載的這個(gè)作為首選連接的驅(qū)動(dòng)程序。利用JDBC實(shí)現(xiàn)數(shù)據(jù)庫(kù)的操作一般可分為如下幾個(gè)步驟。1、加載jdbc驅(qū)動(dòng)程序。2、定義連接url3、通過DriverManager到得一個(gè)與數(shù)據(jù)庫(kù)連接的句柄4、創(chuàng)建statement對(duì)象。5、執(zhí)行查詢或更新。6、查看返回的結(jié)果集。7、關(guān)閉結(jié)果集對(duì)象。8、關(guān)閉statement對(duì)象。9、關(guān)閉連接接口。6.1.2安裝JDBC驅(qū)動(dòng)程序1.安裝MicrosoftSQLServer2000JDBC驅(qū)動(dòng)程序安裝文件:mssqlserver.jar、msbase.jar、msutil.jar2.安裝MicrosoftSQLServer2005JDBC驅(qū)動(dòng)程序安裝文件:sqljdbc.jar的文件3.安裝MySQLJDBC驅(qū)動(dòng)程序安裝文件:mysql-connector-java-3.0.17-ga-bin.jar4.安裝OracleJDBC驅(qū)動(dòng)程序安裝文件:classes12.jar以上驅(qū)動(dòng)程序的安裝位置均為:$CATALINA_HOME/common/lib6.1.3加載JDBC驅(qū)動(dòng)程序加載和注冊(cè)一個(gè)JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序:
Class.forName(className);常用JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序類名實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接創(chuàng)建到指定數(shù)據(jù)庫(kù)的連接:Connectionconn=DriverManager.getConnection(url,user,password);url參數(shù)格式連接一個(gè)ODBC數(shù)據(jù)源時(shí)參數(shù)url格式:
jdbc:odbc:dnsName使用SQLServer2000JDBC驅(qū)動(dòng)程序連接數(shù)據(jù)庫(kù)時(shí)參數(shù)url: jdbc:microsoft:sqlserver://host:port;DatabaseName=dbName使用SQLServer2005JDBC驅(qū)動(dòng)程序連接數(shù)據(jù)庫(kù)時(shí)參數(shù)url格式: jdbc:sqlserver://host:port;DatabaseName=dbName連接MySQL數(shù)據(jù)庫(kù)時(shí)url參數(shù)的格式: jdbc:mysql://host:port/dbName連接Oracle數(shù)據(jù)庫(kù)時(shí)url參數(shù)的格式: jdbc:Oracle:thin://@host:port:dbNameP163Students表的結(jié)構(gòu)對(duì)students表進(jìn)行sql操作select@@versionselect*fromstudentsselect*fromstudentswhereclass='0501'andstudentsex='男’insertintoStudentsvalues('20050207','劉玉倩','女','1998-12-29','多媒體技術(shù)','0502',1,'lyq@163.com')insertintoStudents(StudentID,StudentName,StudentSex,Birthdate,Major)values('20050105','李云飛','男','1988-5-18','計(jì)算機(jī)應(yīng)用‘)updateStudentssetMajor='計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)',email='wangmh@'wherestudentname='汪江濤’deletefromstudentswherestudentid='20050207'P163page6_03.jsp(1)
<%rs.close();conn.close();%>P163page6_03.jsp(2)6.1.4實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接創(chuàng)建到指定數(shù)據(jù)庫(kù)的連接:Connectionconn=DriverManager.getConnection(url,user,password);url參數(shù)格式連接一個(gè)ODBC數(shù)據(jù)源時(shí)參數(shù)url格式:
jdbc:odbc:dnsName使用SQLServer2000JDBC驅(qū)動(dòng)程序連接數(shù)據(jù)庫(kù)時(shí)參數(shù)url:jdbc:microsoft:sqlserver://host:port;DatabaseName=dbName使用SQLServer2005JDBC驅(qū)動(dòng)程序連接數(shù)據(jù)庫(kù)時(shí)參數(shù)url格式:jdbc:sqlserver://host:port;DatabaseName=dbName連接MySQL數(shù)據(jù)庫(kù)時(shí)url參數(shù)的格式:
jdbc:mysql://host:port/dbName連接Oracle數(shù)據(jù)庫(kù)時(shí)url參數(shù)的格式:
jdbc:Oracle:thin://@host:port:dbName6.1.5在Dreamweaver中創(chuàng)建數(shù)據(jù)庫(kù)連接打開JSP頁(yè),選擇“窗口”→“數(shù)據(jù)庫(kù)”命令。在“數(shù)據(jù)庫(kù)”面板上單擊加號(hào)按鈕,并從彈出菜單中選擇驅(qū)動(dòng)程序。如果菜單中沒有列出所需要的驅(qū)動(dòng)程序,可選擇“自定義JDBC連接”。設(shè)置連接參數(shù):輸入連接的名稱。注意不要在該名稱中使用任何空格或特殊字符。輸入驅(qū)動(dòng)程序的連接參數(shù),包括驅(qū)動(dòng)程序完全限定類名、要連接的數(shù)據(jù)庫(kù)的URL、用戶名和密碼。指定要使用的JDBC驅(qū)動(dòng)程序的位置,通常應(yīng)該選擇“在測(cè)試服務(wù)器上使用驅(qū)動(dòng)程序”選項(xiàng)。單擊“測(cè)試”按鈕。6.2.1SELECT語句SELECT<fieldList>[INTO<newTable>]FROM<dataSource>[WHERE<searchCondition>][ORDERBY<orderByExpression>[ASC|DESC]]其中SELECT子句用于指定輸出字段;INTO子句的作用是將檢索結(jié)果存儲(chǔ)到一個(gè)名為newTable的新表中;FROM子句用于指定要檢索的數(shù)據(jù)來源;WHERE子句用于指定對(duì)記錄的搜索條件;ORDERBY子句用于對(duì)檢索到的記錄進(jìn)行排序處理。6.2.2使用JDBCAPI創(chuàng)建記錄集1.Connection接口Connection接口的常用方法voidclose():立即釋放此Connection對(duì)象的數(shù)據(jù)庫(kù)和JDBC資源StatementcreateStatement():創(chuàng)建一個(gè)Statement對(duì)象來將SQL語句發(fā)送到數(shù)據(jù)庫(kù)CallableStatementprepareCall(Stringsql):創(chuàng)建一個(gè)CallableStatement對(duì)象來調(diào)用數(shù)據(jù)庫(kù)存儲(chǔ)過程PreparedStatementprepareStatement(Stringsql):創(chuàng)建一個(gè)PreparedStatement對(duì)象來將參數(shù)化的SQL語句發(fā)送到數(shù)據(jù)庫(kù)6.2.2使用JDBCAPI創(chuàng)建記錄集2.Statement及其子接口java.sql.Statement接口用于執(zhí)行靜態(tài)SQL語句并返回所生成的結(jié)果。Statement接口有一個(gè)PreparedStatement子接口,用于對(duì)SQL語句進(jìn)行預(yù)編譯,然后可以高效地多次執(zhí)行該語句。PreparedStatement接口有一個(gè)CallableStatement子接口,用于執(zhí)行數(shù)據(jù)庫(kù)中的存儲(chǔ)過程。創(chuàng)建Statement對(duì)象: Statementstmt=conn.createStatement();6.2.2使用JDBCAPI創(chuàng)建記錄集Statement接口的常用方法voidclose():立即釋放此Statement對(duì)象的數(shù)據(jù)庫(kù)和JDBC資源booleanexecute(Stringsql):執(zhí)行給定的SQL語句,該語句可能返回多個(gè)結(jié)果ResultSetexecuteQuery(Stringsql):執(zhí)行給定的SQL語句,該語句返回單個(gè)ResultSet對(duì)象intexecuteUpdate(Stringsql):執(zhí)行給定SQL語句,該語句可能為INSERT、UPDATE或DELETE語句,或者不返回任何內(nèi)容的SQL語句(如SQLDDL語句)6.2.2使用JDBCAPI創(chuàng)建記錄集2.Statement及其子接口PreparedStatement接口的常用方法booleanexecute():在此PreparedStatement對(duì)象中執(zhí)行SQL語句,該語句可以是任何SQL語句ResultSetexecuteQuery():在此PreparedStatement對(duì)象中執(zhí)行SQL查詢,并返回一個(gè)ResultSet對(duì)象intexecuteUpdate():在此PreparedStatement對(duì)象中執(zhí)行SQL語句,該語句必須是一個(gè)INSERT、UPDATE或DELETE語句,或者是一個(gè)什么都不返回的SQL語句voidsetObject(intparameterIndex,Objectx):使用給定對(duì)象設(shè)置指定參數(shù)的值70/1926.2.2使用JDBCAPI創(chuàng)建記錄集3.ResultSet接口創(chuàng)建ResultSet對(duì)象:ResultSetrs=stmt.executeQuery(Stringsql)ResultSetrs=pstmt.executeQuery();ResultSet接口的常用方法:booleanabsolute(introw):將指針移動(dòng)到此ResultSet對(duì)象的給定行編號(hào)ObjectgetObject(intcolumnIndex):以Java語言中Object的形式獲取此ResultSet對(duì)象的當(dāng)前行中指定列的值ObjectgetObject(StringcolumnName):以Java語言中Object的形式獲取此ResultSet對(duì)象的當(dāng)前行中指定列的值booleannext()
將指針從當(dāng)前位置下移一行。booleanprevious():將指針移動(dòng)到此ResultSet對(duì)象的上一行。booleanwasNull():報(bào)告最后一個(gè)讀取的列是否具有SQLNULL值6.2.3在Dreamweaver中創(chuàng)建記錄集1.用簡(jiǎn)單記錄集對(duì)話框創(chuàng)建記錄集打開要使用記錄集的JSP動(dòng)態(tài)頁(yè)。選擇“窗口”→“綁定”命令。在綁定面板中單擊加號(hào)按鈕,選擇“記錄集(查詢)”命令。若出現(xiàn)了高級(jí)記錄集對(duì)話框,請(qǐng)通過單擊“簡(jiǎn)單”按鈕。在“名稱”文本框中,輸入記錄集的名稱。從“連接”列表框中選取一個(gè)連接。在“表”列表框中,選取為記錄集提供數(shù)據(jù)的數(shù)據(jù)庫(kù)表。若要使記錄集只包括數(shù)據(jù)庫(kù)表中的部分字段,請(qǐng)單擊“已選定”,然后按住Ctrl鍵并單擊列表中的字段,以選擇所需的字段。若要只包括表中的某些記錄,請(qǐng)按照下列步驟完成“過濾器”部分。在第一個(gè)列表框中選取數(shù)據(jù)庫(kù)表中的字段。在第二個(gè)列表框中選取一個(gè)運(yùn)算符。在第三個(gè)列表框中選取一種測(cè)試值類型(包括URL參數(shù)、表單變量、cookie、會(huì)話變量、應(yīng)用程序變量以及輸入的值)。在文本框中輸入測(cè)試值。例如,若選擇了表單變量,則應(yīng)在此文本框中輸入表單元素的名稱。若要對(duì)記錄進(jìn)行排序,請(qǐng)選取要作為排序依據(jù)的列,然后指定是按升序(1、2、3...或A、B、C...)還是按降序?qū)τ涗涍M(jìn)行排序。6.2.3在Dreamweaver中創(chuàng)建記錄集2.用高級(jí)記錄集對(duì)話框創(chuàng)建記錄集打開要使用記錄集的JSP頁(yè)。在綁定面板中單擊加號(hào)按鈕,選擇“記錄集(查詢)”命令。如果出現(xiàn)了簡(jiǎn)單記錄集對(duì)話框,請(qǐng)通過單擊“高級(jí)”按鈕切換到高級(jí)記錄集對(duì)話框。在“名稱”文本框中,輸入記錄集的名稱。從“連接”列表框中選取一個(gè)連接。在SQL文本區(qū)域中輸入一個(gè)SQL語句。如果SQL語句包含變量,請(qǐng)?jiān)凇白兞俊眳^(qū)域中定義它們的值,方法是單擊加號(hào)按鈕并輸入變量名稱、默認(rèn)值(若未返回運(yùn)行時(shí)值,則變量應(yīng)取該值)和運(yùn)行時(shí)值。6.2.3在Dreamweaver中創(chuàng)建記錄集3.管理記錄集顯示字段值。若要在JSP頁(yè)中顯示記錄集內(nèi)的某個(gè)字段值,可從綁定面板上將該字段直接拖放到頁(yè)面中;也可以先定位插入點(diǎn),然后在綁定面板上單擊一個(gè)字段,然后單擊綁定面板底部的“插入”按鈕。編輯記錄集。創(chuàng)建記錄集時(shí),新記錄集同時(shí)出現(xiàn)在綁定面板和服務(wù)器行為面板上。若要對(duì)已有記錄集進(jìn)行修改,可在服務(wù)器面板上單擊該記錄集,然后利用屬性檢查器對(duì)記錄集的屬性進(jìn)行設(shè)置。復(fù)制記錄集。若要在兩個(gè)JSP頁(yè)之間復(fù)制記錄集,可打開包含記錄集的JSP頁(yè),在綁定面板上右擊一個(gè)記錄集并從彈出菜單中選擇“拷貝”命令,然后切換到另一個(gè)JSP頁(yè),接著在綁定面板上單擊鼠標(biāo)右鍵并從彈出菜單中選擇“粘貼”命令。刪除記錄集。若要?jiǎng)h除一個(gè)記錄集,可在綁定面板上單擊該記錄集,然后單擊減號(hào)按鈕。6.2.4分頁(yè)顯示記錄集創(chuàng)建記錄集之后,就可以在JSP頁(yè)上顯示記錄集的內(nèi)容。如果記錄集包含的記錄比較多(例如10000條),則必須通過設(shè)置在一個(gè)頁(yè)面中顯示的記錄數(shù)目來分頁(yè)顯示記錄集,以縮短頁(yè)面的下載時(shí)間。在一個(gè)頁(yè)面中顯示的記錄構(gòu)成一個(gè)記錄組,可以通過記錄集導(dǎo)航條在不同記錄組之間移動(dòng),也可以通過記錄計(jì)數(shù)器顯示總頁(yè)數(shù)、當(dāng)前頁(yè)號(hào)以及記錄總數(shù)。 1.通過編程實(shí)現(xiàn)記錄集分頁(yè)顯示 2.通過服務(wù)器行為實(shí)現(xiàn)記錄集分頁(yè)顯示6.2.5創(chuàng)建搜索/結(jié)果頁(yè)為了給JSP應(yīng)用程序添加搜索功能,通常需要?jiǎng)?chuàng)建一個(gè)搜索頁(yè)和一個(gè)結(jié)果頁(yè)。在搜索頁(yè)中,訪問者通過表單輸入搜索參數(shù)并將這些參數(shù)傳遞給服務(wù)器上的結(jié)果頁(yè),由結(jié)果頁(yè)獲取搜索參數(shù),連接到數(shù)據(jù)庫(kù)并執(zhí)行數(shù)據(jù)庫(kù)查詢,創(chuàng)建記錄集并顯示其內(nèi)容。在某些情況下,也可以將這搜索頁(yè)和結(jié)果頁(yè)合而為一。1.通過編程實(shí)現(xiàn)搜索/結(jié)果頁(yè)2.通過服務(wù)器行為實(shí)現(xiàn)搜索/結(jié)果頁(yè)6.2.6創(chuàng)建主/詳細(xì)頁(yè)主/詳細(xì)頁(yè)通過兩個(gè)明細(xì)級(jí)別來顯示從數(shù)據(jù)庫(kù)中檢索的信息。這個(gè)頁(yè)面集由主頁(yè)和詳細(xì)所組成,主頁(yè)列出通過查詢返回的所有記錄部分信息的列表,每條記錄都包含一個(gè)超級(jí)鏈接,當(dāng)單擊主頁(yè)上的超級(jí)鏈接時(shí)打開詳細(xì)頁(yè)并傳遞URL參數(shù),在詳細(xì)頁(yè)中讀取URL參數(shù)并根據(jù)此參數(shù)值執(zhí)行數(shù)據(jù)庫(kù)查詢,以檢索所選記錄的更多詳細(xì)信息并顯示出來。1.通過編程實(shí)現(xiàn)主/詳細(xì)頁(yè)2.通過服務(wù)器行為實(shí)現(xiàn)主/詳細(xì)頁(yè)6.3.1SQLINSERT語句INSERT語句的基本語法如下:INSERTINTOtableName[(fieldList)]VALUES(valueList)其中tableName是用來接受數(shù)據(jù)的表的名稱;fieldList給出若干個(gè)要插入數(shù)據(jù)的字段,該列表必須用圓括號(hào)起來,其中的各個(gè)字段用逗號(hào)分隔,如果省略fieldList,則使用目標(biāo)表中的所有字段來接受數(shù)據(jù);valueList給出待插入的數(shù)據(jù),這個(gè)列表也必須用圓括號(hào)括起來,其中的各個(gè)值用逗號(hào)分隔。如果希望在一行記錄的所有字段中添加數(shù)據(jù),則可以省略INSERT語句中的(fieldList)部分。在這種情況下,只要在VALUES關(guān)鍵字后面列出要添加的數(shù)據(jù)值就行了,但必須使值的順序與目標(biāo)表中的字段順序保持一致。6.3.2編程實(shí)現(xiàn)添加記錄調(diào)用Class.forName方法加載JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。調(diào)用DriverManager.getConnection方法連接到指定數(shù)據(jù)庫(kù),并創(chuàng)建一個(gè)Connection連接對(duì)象。調(diào)用Connection對(duì)象的preparedStatement方法創(chuàng)建一個(gè)PreparedStatement對(duì)象,將參數(shù)化的SQL語句發(fā)送到數(shù)據(jù)庫(kù)。調(diào)用PreparedStatement對(duì)象的setter方法(如setShort、setString等)設(shè)置參數(shù)值,以替換SQL語句中的“?”占位符。必須指定與輸入?yún)?shù)的已定義SQL類型兼容的類型。調(diào)用PreparedStatement對(duì)象的executeUpdate方法執(zhí)行SQL語句。6.3.3快速生成記錄添加頁(yè)在Dreamweaver8中,添加記錄的頁(yè)面由兩個(gè)構(gòu)造塊組成:允許用戶輸入數(shù)據(jù)的表單和用于更新數(shù)據(jù)庫(kù)的“插入記錄”服務(wù)器行為。既可以使用“插入記錄表單向?qū)А蓖ㄟ^單個(gè)操作添加這兩個(gè)構(gòu)造塊,也可以使用表單工具和“服務(wù)器行為”面板分別添加它們。1.使用向?qū)捎涗浱砑禹?yè)面2.逐塊生成記錄添加頁(yè)面6.4.1sqlupdate語句在sql語言中,更新記錄的操作是通過update語句來實(shí)現(xiàn)的。update語句用于對(duì)目標(biāo)表中的一行、多行或所有記錄進(jìn)行修改。update語句的基本語法如下:updatetablenamesetfieldname1=value1,fieldname2=value2…fieldnamen=valuen[wheresearchcondition]其中tablename給出要更新數(shù)據(jù)的表的名稱;set子句指定要修改的字段和所使用的數(shù)據(jù),fieldname1、fieldname2…fieldnamen指定包含待修改數(shù)據(jù)的字段;value1、value2…valuen給出各個(gè)字段的新值。where子句用于指定要修改目標(biāo)表中的哪些記錄。如果省略where子句,則目標(biāo)表中的所有記錄都將被修改成由set子句指定的數(shù)據(jù)。6.4.2編程實(shí)現(xiàn)記錄更新調(diào)用Class.forName方法加載JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。調(diào)用DriverManager.getConnection方法連接到指定數(shù)據(jù)庫(kù),并創(chuàng)建一個(gè)Connection連接對(duì)象。調(diào)用Connection對(duì)象的preparedStatement方法創(chuàng)建一個(gè)PreparedStatement對(duì)象,將參數(shù)化的UPDATE語句發(fā)送到數(shù)據(jù)庫(kù),該語句可以包含一個(gè)或多個(gè)“?”參數(shù)占位符。例如,為各個(gè)字段提供的值可以使用“?”參數(shù)來表示。通過request.getParameter方法獲取表單參數(shù),并調(diào)用PreparedStatement對(duì)象的setter方法(如setInt、setString等)來設(shè)置參數(shù)值,以替換SQL語句中的“?”占位符。必須指定與輸入?yún)?shù)的已定義SQL類型兼容的類型。調(diào)用PreparedStatement對(duì)象的executeUpdate方法執(zhí)行UPDATE語句,此時(shí)該方法將返回所影響的行數(shù)。如果發(fā)生數(shù)據(jù)庫(kù)訪問錯(cuò)誤,則拋出SQLException異常。6.4.3快速生成記錄更新頁(yè)錄1.搜索要更新的記錄2.打開更新頁(yè)面并傳遞記錄標(biāo)識(shí)3.檢索要更新的記錄4.使用向?qū)筛马?yè)面更新頁(yè)面具有3個(gè)構(gòu)造塊:一個(gè)用于從數(shù)據(jù)表中檢索記錄的記錄集;一個(gè)允許用戶修改記錄數(shù)據(jù)的表單;一個(gè)用于更新記錄數(shù)據(jù)的“更新記錄”服務(wù)器行為。在Dreamweaver8中,可以使用更新記錄表單向?qū)硖砑雍竺鎯蓚€(gè)構(gòu)造塊。6.5.1SQLDELETE語句deletefromtablename[wheresearchcodition]其中,tablename指定要從其中刪除記錄的表的名稱;where子句指定要從目標(biāo)表中刪除哪些記錄,searchcodition指定記錄的篩選條件,凡符合該條件的記錄將被刪除。如果省略where子句,則目標(biāo)表中的所有記錄被刪除。6.5.2編程實(shí)現(xiàn)記錄刪除調(diào)用Class.forName方法加載JDBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序。調(diào)用DriverManager.getConnection方法連接到指定數(shù)據(jù)庫(kù),并創(chuàng)建一個(gè)Connection連接對(duì)象。調(diào)用Connection對(duì)象的preparedStatement方法創(chuàng)建一個(gè)PreparedStatement對(duì)象,將參數(shù)化的DELETE語句發(fā)送到數(shù)據(jù)庫(kù),在WHERE子句可以包含一個(gè)或多個(gè)“?”參數(shù)占位符,以指定要?jiǎng)h除哪些記錄。通過request.getParameter方法獲取表單參數(shù),并調(diào)用PreparedSta
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全國(guó)環(huán)保知識(shí)競(jìng)賽題庫(kù)及答案(共480題)
- 2021初級(jí)護(hù)師考試基礎(chǔ)護(hù)理學(xué)考點(diǎn)習(xí)題及答案
- 2024年07月浙江路橋農(nóng)商銀行暑期實(shí)習(xí)生招募筆試歷年參考題庫(kù)附帶答案詳解
- 2024年07月浙江民生銀行金華二級(jí)分行社會(huì)招考(720)筆試歷年參考題庫(kù)附帶答案詳解
- 2024年漣水縣中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 2024年漣源市中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 基本看圖紙技能指南
- 2024年海南省海口監(jiān)獄醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 2024年海南省婦幼保健院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 古詩(shī)詞誦讀《涉江采芙蓉》說課稿 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊(cè)
- 安全生產(chǎn)培訓(xùn)法律法規(guī)
- 廣東省廣州市2021-2022學(xué)年高二上學(xué)期期末五校聯(lián)考生物試題
- 2024年領(lǐng)導(dǎo)干部任前廉政知識(shí)考試測(cè)試題庫(kù)及答案
- 2023-2024學(xué)年浙江省寧波市鎮(zhèn)海區(qū)四年級(jí)(上)期末數(shù)學(xué)試卷
- 舞蹈演出編導(dǎo)排練合同模板
- 腸梗阻課件完整版本
- 中醫(yī)辨證-八綱辨證(中醫(yī)學(xué)課件)
- 冠脈介入進(jìn)修匯報(bào)
- 蔣詩(shī)萌小品《誰殺死了周日》臺(tái)詞完整版
- 生涯發(fā)展展示
- 報(bào)價(jià)單(報(bào)價(jià)單模板)
評(píng)論
0/150
提交評(píng)論