版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目十三使用JDBC實(shí)現(xiàn)超市進(jìn)銷存管理采用JDBC實(shí)現(xiàn)超市進(jìn)銷存系統(tǒng),其功能包括商品的添加、刪除、修改、查詢等操作?!卷?xiàng)目描述】
1.JDBC編程環(huán)境的搭建。2.采用Statement完成數(shù)據(jù)庫(kù)的增刪改查。3.采用PreparedStatement完成數(shù)據(jù)庫(kù)的增刪改查?!救蝿?wù)分解】
任務(wù)一JDBC編程環(huán)境的搭建【任務(wù)描述】
在進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)之前,需要獲得不同數(shù)據(jù)庫(kù)環(huán)境下的JDBC數(shù)據(jù)庫(kù)連接。任務(wù)一集合類的選擇
【必備知識(shí)】1.JDBC簡(jiǎn)介JDBC的全稱是JavaDataBaseConnectivity(java數(shù)據(jù)庫(kù)連接),它有兩個(gè)含義。首先,對(duì)于使用Java編寫數(shù)據(jù)庫(kù)訪問(wèn)程序的程序員來(lái)說(shuō),JDBC是一組Java用于執(zhí)行SQL語(yǔ)句的API,Java程序通過(guò)JDBCAPI操作到關(guān)系數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)的查詢和更新。其次,對(duì)于各大數(shù)據(jù)庫(kù)廠商來(lái)說(shuō),JDBC為數(shù)據(jù)庫(kù)訪問(wèn)提供了一個(gè)統(tǒng)一的接口標(biāo)準(zhǔn),不同的數(shù)據(jù)庫(kù)廠商都實(shí)現(xiàn)這個(gè)統(tǒng)一的接口。2.JDBC驅(qū)動(dòng)程序JDBC為數(shù)據(jù)庫(kù)的廠商提供了一個(gè)統(tǒng)一的接口,是由各數(shù)據(jù)庫(kù)廠商根據(jù)各自不同的底層數(shù)據(jù)庫(kù)和中間件來(lái)設(shè)計(jì)接口的實(shí)現(xiàn)類,這些實(shí)現(xiàn)類就是JDBC驅(qū)動(dòng)程序。常用的數(shù)據(jù)庫(kù)以及其JDBC驅(qū)動(dòng)包見(jiàn)表13-1。任務(wù)一集合類的選擇
3.3.DriverManager類和Connection類DriverManager管理一組JDBC驅(qū)動(dòng)程序的基本服務(wù)。所有Driver類都必須包含有一個(gè)靜態(tài)部分。它創(chuàng)建該類的實(shí)例,然后在加載該實(shí)例時(shí)DriverManager類進(jìn)行注冊(cè)。加載Driver類,然后自動(dòng)在DriverManager中注冊(cè)的方式有兩種:通過(guò)調(diào)用方法Class.forName。這將顯式地加載驅(qū)動(dòng)程序類。加載Driver類并在DriverManager類中注冊(cè)后,它們即可用來(lái)與數(shù)據(jù)庫(kù)建立連接。當(dāng)調(diào)用DriverManager.getConnection方法發(fā)出連接請(qǐng)求時(shí),DriverManager將檢查每個(gè)驅(qū)動(dòng)程序,查看它是否可以建立連接。任務(wù)一JDBC編程環(huán)境的搭建【解題思路】 程序員在使用JDBC編程的時(shí)候,只需要面向標(biāo)準(zhǔn)的JDBCAPI編程即可,通過(guò)在工程中引進(jìn)不同的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序來(lái)使用不同的數(shù)據(jù)庫(kù)。搭建數(shù)據(jù)庫(kù)環(huán)境如下步驟:1、安裝MYSQL數(shù)據(jù)庫(kù)。2、設(shè)計(jì)超市進(jìn)銷存管理系統(tǒng)的數(shù)據(jù)庫(kù)。3、測(cè)試使用JDBC連接數(shù)據(jù)庫(kù)。4.常用的數(shù)據(jù)庫(kù)介紹(1)MySQL(2)SQLServer(3)OracleDatabase(4)DB25.常用的SQL語(yǔ)句舉例創(chuàng)建數(shù)據(jù)庫(kù):CREATEDATABASEdatabase-name刪除數(shù)據(jù)庫(kù):dropdatabasedbname創(chuàng)建新表:createtabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)刪除新表:droptabletabname增加一個(gè)列:Altertabletabnameaddcolumncoltype添加主鍵:Altertabletabnameaddprimarykey(col)刪除主鍵:Altertabletabnamedropprimarykey(col)創(chuàng)建索引:create[unique]indexidxnameontabname(col….)刪除索引:dropindexidxname創(chuàng)建視圖:createviewviewnameasselectstatement刪除視圖:dropviewviewname
幾個(gè)簡(jiǎn)單的表的數(shù)據(jù)操作的sql語(yǔ)句:選擇:select*fromtable1where范圍插入:insertintotable1(field1,field2)values(value1,value2)刪除:deletefromtable1where范圍更新:updatetable1setfield1=value1where范圍查找:select*fromtable1wherefield1like’%value1%’排序:select*fromtable1orderbyfield1,field2[desc]總數(shù):selectcountastotalcountfromtable1求和:selectsum(field1)assumvaluefromtable1平均:selectavg(field1)asavgvaluefromtable1最大:selectmax(field1)asmaxvaluefromtable1最?。簊electmin(field1)asminvaluefromtable1
任務(wù)一JDBC編程環(huán)境的搭建【解題思路】 程序員在使用JDBC編程的時(shí)候,只需要面向標(biāo)準(zhǔn)的JDBCAPI編程即可,通過(guò)在工程中引進(jìn)不同的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序來(lái)使用不同的數(shù)據(jù)庫(kù)。搭建數(shù)據(jù)庫(kù)環(huán)境如下步驟:1、安裝MYSQL數(shù)據(jù)庫(kù)。2、設(shè)計(jì)超市進(jìn)銷存管理系統(tǒng)的數(shù)據(jù)庫(kù)。3、測(cè)試使用JDBC連接數(shù)據(jù)庫(kù)。
【任務(wù)透析】
從網(wǎng)站上獲取MySQL安裝程序后,按安裝向?qū)Р襟E進(jìn)行安裝。(詳見(jiàn)教材)。
進(jìn)銷存系統(tǒng)E-R圖CREATETABLEIFNOTEXISTS`client`(`id`int(10)NOTNULLAUTO_INCREMENT,`code`varchar(50)DEFAULT'0',`name`varchar(50)DEFAULT'0',`address`varchar(50)DEFAULT'0',`telephone`varchar(50)DEFAULT'0',`email`varchar(50)DEFAULT'0',PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;創(chuàng)建客戶表SQL語(yǔ)句:創(chuàng)建商品表SQL語(yǔ)句:CREATETABLEIFNOTEXISTS`goods`(`id`int(10)NOTNULLAUTO_INCREMENT,`code`varchar(50)DEFAULTNULL,`name`varchar(50)DEFAULTNULL,`jc`varchar(50)DEFAULTNULL,`cd`varchar(50)DEFAULTNULL,
`dw`varchar(50)DEFAULTNULL,`gg`varchar(50)DEFAULTNULL,`bz`varchar(50)DEFAULTNULL,`ph`varchar(50)DEFAULTNULL,`pzwh`varchar(50)DEFAULTNULL,`memo`varchar(50)DEFAULTNULL,
`dj`doubleDEFAULTNULL,`sl`int(11)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=8DEFAULTCHARSET=utf8;按照相似的語(yǔ)句創(chuàng)建其它表。接下來(lái),我們可以使用JDBC對(duì)它進(jìn)行連接了:packageedu.gdkm.sql;importjava.sql.*;publicclassDBConnection{ publicstaticConnectiongetConnection(){ Connectioncon=null; try{ Class.forName("com.mysql.jdbc.Driver"); System.out.println("成功加載mysql驅(qū)動(dòng)程序"); }catch(ClassNotFoundExceptione){ System.out.println("無(wú)法找到mysql驅(qū)動(dòng)程序,請(qǐng)檢查jar包是否導(dǎo)入項(xiàng)目中!"); }StringdbURL=newString("jdbc:mysql://127.0.0.1:3306/gdkmjxc"); try{ con=DriverManager.getConnection(dbURL,"root","root"); System.out.println("數(shù)據(jù)庫(kù)連接成功"); }catch(SQLExceptione){ System.out.println("數(shù)據(jù)庫(kù)連接失敗"); } returncon; }}packageedu.gdkm.ui;
importedu.gdkm.sql.DBConnection;
public
classTestMain{
public
static
voidmain(String[]args){ DBConnection.getConnection(); }}測(cè)試,數(shù)據(jù)庫(kù)連接成功:任務(wù)一集合類的選擇
【課堂提問(wèn)】1.在一個(gè)已完成的信息管理系統(tǒng)中,如果需要采用其他廠商的數(shù)據(jù)庫(kù),需要改動(dòng)程序業(yè)務(wù)邏輯嗎?為什么?哪些是需要改動(dòng)的地方?【現(xiàn)場(chǎng)演練】嘗試連接msssql2005。任務(wù)二采用Statement完成數(shù)據(jù)庫(kù)的增刪改查
【任務(wù)描述】超市進(jìn)銷存系統(tǒng)中商品信息的管理。任務(wù)二采用List派生集合管理有序數(shù)據(jù)【必備知識(shí)】1.Statement類Statement對(duì)象用于將不帶參數(shù)的簡(jiǎn)單SQL語(yǔ)句發(fā)送到數(shù)據(jù)庫(kù),該對(duì)象提供了3種執(zhí)行SQL語(yǔ)句的方法:executeQuery,executeUpdate和execute,具體使用哪種方法由SQL語(yǔ)句所產(chǎn)生的內(nèi)容決定。2.ResultSet結(jié)果集
ResultSet對(duì)象是執(zhí)行Statement對(duì)象的方法后返回的一個(gè)對(duì)象,包括了符合SQL語(yǔ)句中條件的數(shù)據(jù)庫(kù)所有行,可以通過(guò)一套get方法(getString()、getInt()等)對(duì)這些行的數(shù)據(jù)進(jìn)行訪問(wèn),通過(guò)next方法用于訪問(wèn)結(jié)果集中的各行。3.3.JDBC編程一般步驟(1)通過(guò)帶參數(shù)調(diào)用Class.forName()方法,將DriverManager類實(shí)例化、加載驅(qū)動(dòng)程序。(2)調(diào)用DriverManager.getConnection()方法取得一個(gè)Connection對(duì)象,以此連接到數(shù)據(jù)庫(kù)。(3)通過(guò)Connection.createStatement()方法創(chuàng)建一個(gè)Statement對(duì)象,以此來(lái)訪問(wèn)數(shù)據(jù)庫(kù)表中的記錄。(4)通過(guò)Statement.executeQuery()方法或Statement.executeUpdate()方法來(lái)查詢或更新數(shù)據(jù)庫(kù)記錄。(5)如果執(zhí)行了一個(gè)查詢,可以通過(guò)處理Statement.executeQuery()方法所返回的ResultSet對(duì)象,通過(guò)該對(duì)象可以進(jìn)行數(shù)據(jù)庫(kù)記錄的瀏覽、新增、刪除和修改。(6)完成數(shù)據(jù)庫(kù)操作后,依次調(diào)用各個(gè)對(duì)象的Close()方法,關(guān)閉數(shù)據(jù)庫(kù)連接,釋放JDBC資源。任務(wù)二【解題思路】 超市進(jìn)銷存系統(tǒng)中商品信息的管理,其中包括商品信息列表查詢,商品的添加、修改和刪除,我們可以利用statement對(duì)象實(shí)現(xiàn)數(shù)據(jù)庫(kù)的訪問(wèn),將SQL語(yǔ)句傳輸?shù)綌?shù)據(jù)庫(kù),并得到對(duì)應(yīng)的處理。處理步驟如下:1、定義一個(gè)業(yè)務(wù)接口GoodsService用于完成商品信息業(yè)務(wù)操作,并在里面定義查詢、添加、修改、刪除等方法。2、利用Statement對(duì)象結(jié)合SQL語(yǔ)句,在GoodsServiceImpl類中實(shí)現(xiàn)該接口定義的若干方法。3、將數(shù)據(jù)體現(xiàn)到窗口顯示?!救蝿?wù)透析】參見(jiàn)程序代碼。任務(wù)二采用List派生集合管理有序數(shù)據(jù)【課堂提問(wèn)】★簡(jiǎn)述使用JDBC操作數(shù)據(jù)庫(kù)的步驟?!锸褂肧tatement操作數(shù)據(jù)庫(kù)時(shí),可以使用哪些方法,這些方法分別針對(duì)數(shù)據(jù)庫(kù)的哪些操作?★數(shù)據(jù)庫(kù)注入攻擊是一種很常見(jiàn)的黑客手段,那么使用JDBC操作數(shù)據(jù)庫(kù)會(huì)不會(huì)出現(xiàn)這種安全隱患,有什么方法可以避免嗎?【現(xiàn)場(chǎng)演練】
1.嘗試完成供貨商的信息管理功能。2.嘗試完成員工的信息管理功能。任務(wù)三
采用PreparedStatement完成數(shù)據(jù)庫(kù)的增刪改查【任務(wù)描述】
使用PreparedStatement實(shí)現(xiàn)商品信息的管理。任務(wù)三采用PreparedStatement完成數(shù)據(jù)庫(kù)的增刪改查【必備知識(shí)】1.PreparedStatement簡(jiǎn)介PreparedStatement接口繼承與Statement,但是兩者有很大的不同之處:PreparedStatement對(duì)象在初始化時(shí)包含了已經(jīng)編譯好的需要執(zhí)行的SQL語(yǔ)句,由于它的預(yù)編譯特性,所以該對(duì)象執(zhí)行的速度要快于Statement對(duì)象,適用于需要多次執(zhí)行的SQL語(yǔ)句。【必備知識(shí)】2.常用派生類HashSet類HashSet是Set集合的典型實(shí)現(xiàn),它按hash算法來(lái)存儲(chǔ)集合中的元素。名稱概述clearParameters()立即清除當(dāng)前參數(shù)值executeQuery()執(zhí)行SQL查詢,返回結(jié)果集executeUpdate()執(zhí)行SQL更新語(yǔ)句setString()將指定參數(shù)設(shè)置為字符串的值setDouble()將指定參數(shù)設(shè)置為雙精度值setInt()將指定參數(shù)設(shè)置為整數(shù)值PreparedStatement對(duì)象的常用方法任務(wù)三采用PreparedStatement完成數(shù)據(jù)庫(kù)的增刪改查【解題思路】 因?yàn)樾枰獙?shí)現(xiàn)的功能與任務(wù)二一致,我們只需要將任務(wù)二中使用Statement的部分使用對(duì)應(yīng)的PreparedStatement替換即可。
public
booleansearch(Stringcondition,Stringvalues){ GoodInfoQueryUi.a=newObject[18][10]; PreparedStatementpstmt; ResultSetrs; Connectioncon=DBConnection.getConnection();
try{ StringinputStr=null,recode;
intn=0;
if(condition=="商品全稱") inputStr="name=?";
if(condition=="商品編號(hào)") inputStr="code=?";
if(condition=="產(chǎn)地") inputStr="cd=?"; recode="SELECT*FROMgoodsWHERE"+inputStr; pstmt=con.prepareStatement(recode); pstmt.setString(1,values); rs=pstmt.executeQuery();
while(rs.next()){ GoodInfoQueryUi.a[n][0]=rs.getInt(1); GoodInfoQueryUi.a[n][1]=rs.getString(3); GoodInfoQueryUi.a[n][2]=rs.getString(2); GoodInfoQueryUi.a[n][3]=rs.getString(5); GoodInfoQueryUi.a[n][4]=rs.getString(6); GoodInfoQueryUi.a
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物資賒賬合同范例
- 燈具個(gè)人購(gòu)銷合同范例范例
- 手工樣件合同范例
- 保潔開(kāi)荒催促合同范例
- 賣燈簡(jiǎn)易合同范例
- 醫(yī)藥銷售培訓(xùn)合同范例
- 農(nóng)村土地買房合同范例
- 空調(diào)安裝保修合同范例
- 輔助護(hù)林員合同范例
- 網(wǎng)吧委托經(jīng)營(yíng)合同范例
- 科技競(jìng)賽志愿者服務(wù)協(xié)議
- 反恐安全教育專題報(bào)告(3篇模板)
- 廣東省廣州市白云區(qū)2022-2023學(xué)年八年級(jí)上學(xué)期期末英語(yǔ)試卷(含答案)
- 實(shí)變函數(shù)智慧樹(shù)知到期末考試答案章節(jié)答案2024年南昌大學(xué)
- 《金屬基增容導(dǎo)線技術(shù)條件+第2部分:鋁包殷鋼芯耐熱鋁合金絞線》
- DB32 4418-2022《 居住建筑標(biāo)準(zhǔn)化外窗系統(tǒng)應(yīng)用技術(shù)規(guī)程》
- (正式版)SHT 3075-2024 石油化工鋼制壓力容器材料選用規(guī)范
- 燃燒脂肪-流行健身舞蹈智慧樹(shù)知到期末考試答案2024年
- 粵23G-T011 預(yù)應(yīng)力混凝土空心方樁
- 2024年廣西交通投資集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 村委會(huì)地震演練方案及流程
評(píng)論
0/150
提交評(píng)論