Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之03JDBC Statement6299.docx
Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之03.JDBC Statement(1)上季我们建建立了与与数据库库的连接接,本季季我们将将对数据据库进行行操作使使用Sttateemennt 执执行DDDL、使使用Sttateemennt 执执行DMML,常常用的插插入、更更新、删删除及查查询数据据哈 Staatemmentt 简介介Stattemeent 提供了了一个操操作数据据库语句句的功能能,可通通过它来来创建表表、插入入记录、修修改记录录、删除除记录等等操作 获得SStattemeent可以从数数据库连连接Coonneectiion中中获得SStattemeentConneectiion connn = neew CConnnecttionnUtiil().geetCoonneectiion(); Staatemmentt sttmt = cconnn.crreatteSttateemennt();ConneectiionUUtill.jaavapackaage comm.miichaael.jdbbc; impportt jaava.sqll.Coonneectiion; immporrt jjavaa.sqql.DDrivverMManaagerr; iimpoort javva.uutill.Prropeertiies; puubliiccllasss CoonneectiionUUtill /第一一种方法法 pubblicc Coonneectiion gettConnnecctioon() Connnecctioon cconnn = nulll; trry /Claass.forrNamme加载载驱动 Claass.forrNamme(""comm.myysqll.jddbc.Driiverr"); /DriiverrMannageer获得得连接 connn = DrriveerMaanagger.gettConnnecctioon(""jdbbc:mmysqql:/loocallhosst:333066/jddbc_db"","rroott",""myssqlaadmiin"); rretuurn connn; cattch (Exxcepptioon ee) e.priintSStacckTrracee(); rretuurnnnulll; /第二二种方法法 pubblicc Coonneectiion gettConnnecctioon(SStriing driiverr,Sttrinng uurl,Strringg usser,Strringg paasswwordd) Coonneectiion connn = nuull; ttry /Cllasss.foorNaame加加载驱动动 Cllasss.foorNaame(driiverr); /DDrivverMManaagerr获得连连接 cconnn = DriiverrMannageer.ggetCConnnecttionn(urrl,uuserr,paasswwordd); retturnn coonn; caatchh (EExceeptiion e) ee.prrinttStaackTTracce(); retturnnnulll; /第第三种方方法 puubliic CConnnecttionn oppenCConnnecttionn() SStriing driiverr = "" SStriing urll = "" SStriing useer = """ Strringg paasswwordd = "" PPropperttiess prrop = nnew Prooperrtiees(); Connnecctioon cconnn = nulll; trry /加载属属性文件件 prrop.loaad(tthiss.geetCllasss().gettClaassLLoadder().ggetRResoourcceAssStrreamm("DDBCoonfiig.ppropperttiess"); ddrivver = ppropp.geetPrropeertyy("ddrivver""); urll = proop.ggetPProppertty(""urll"); usser = ppropp.geetPrropeertyy("uuserr"); paasswwordd = proop.ggetPProppertty(""passswoord""); /CClasss.fforNNamee加载驱驱动 CClasss.fforNNamee(drriveer); /DriiverrMannageer获得得连接 connn = DrriveerMaanagger.gettConnnecctioon(uurl,useer,ppasssworrd); reeturrn cconnn; ccatcch (Exccepttionn e) e.pprinntSttackkTraace(); retturnnnulll; TestSStattemeent.javvapackaage comm.miichaael.jdbbc; impportt jaava.sqll.Coonneectiion; immporrt jjavaa.sqql.SSQLEExceeptiion; immporrt jjavaa.sqql.SStattemeent; puubliiccllasss TeestSStattemeent puubliicsttatiicvooid gettStaatemmentt() CConnnecttionn coonn = nnew ConnnecctioonUttil().oopennConnnecctioon(); tryy Staatemmentt sttmt = cconnn.crreatteSttateemennt(); SSysttem.outt.prrinttln(stmmt); caatchh (SSQLEExceeptiion e) / TTODOO Auuto-genneraatedd caatchh bllockk e.priintSStacckTrracee(); Main.javvapackaage comm.miichaael.maiin; impportt coom.mmichhaell.jddbc.ConnnecctioonUttil; immporrt ccom.micchaeel.jjdbcc.TeestSStattemeent; puubliiccllasss Maain /* * pparaam aargss */ pubbliccstaaticcvoiid mmainn(Sttrinng arrgs) CoonneectiionUUtill cuu = neww CoonneectiionUUtill(); /第一一种方法法 SSysttem.outt.prrinttln("第一一种方法法:"+cu.gettConnnecctioon(); /第二种种方法 Syysteem.oout.priintlln(""第二种种方法:"+ccu.ggetCConnnecttionn("ccom.myssql.jdbbc.DDrivver"","jddbc:myssql:/llocaalhoost:33006/jjdbcc_dbb",""rooot","myysqlladmmin""); /第三三种方法法 SSysttem.outt.prrinttln("第三三种方法法:"+cu.opeenCoonneectiion(); TTesttStaatemmentt.geetSttateemennt(); 测试结果: 使用SStattemeent 执行DDDL可以使用用Staatemmentt来执行行一个数数据定义义语句,例例如:创创建一张张表TestSStattemeent.javvapackaage comm.miichaael.jdbbc; impportt jaava.sqll.Coonneectiion; immporrt jjavaa.sqql.SSQLEExceeptiion; immporrt jjavaa.sqql.SStattemeent; puubliiccllasss TeestSStattemeent puubliicsttatiicvooid gettStaatemmentt() CConnnecttionn coonn = nnew ConnnecctioonUttil().oopennConnnecctioon(); tryy Staatemmentt sttmt = cconnn.crreatteSttateemennt(); SSysttem.outt.prrinttln(stmmt); caatchh (SSQLEExceeptiion e) / TTODOO Auuto-genneraatedd caatchh bllockk e.priintSStacckTrracee(); puubliicsttatiicvooid creeateeTabble() /DDLL数据定定义语句句 CConnnecttionn coonn = nnew ConnnecctioonUttil().oopennConnnecctioon(); Strringg sqql = "ccreaate tabble CusstommerTTbl(id intt prrimaary keyy auuto_inccremmentt,naame varrchaar(220),emaail varrchaar(220)" trry Sttateemennt sstmtt = connn.ccreaateSStattemeent(); /执执行SQQL语句句 sttmt.exeecutte(ssql); ccatcch (SQLLExccepttionn e) / TODDO AAutoo-geenerrateed ccatcch bblocck ee.prrinttStaackTTracce(); fiinallly iff(coonn!=nuull) tryy coonn.cloose(); caatchh (SSQLEExceeptiion e) connn = nuull; ee.prrinttStaackTTracce(); Main.javvapackaage comm.miichaael.maiin; impportt coom.mmichhaell.jddbc.ConnnecctioonUttil; immporrt ccom.micchaeel.jjdbcc.TeestSStattemeent; puubliiccllasss Maain /* * pparaam aargss */ pubbliccstaaticcvoiid mmainn(Sttrinng arrgs) CoonneectiionUUtill cuu = neww CoonneectiionUUtill(); /第一一种方法法 SSysttem.outt.prrinttln("第一一种方法法:"+cu.gettConnnecctioon(); /第二种种方法 Syysteem.oout.priintlln(""第二种种方法:"+ccu.ggetCConnnecttionn("ccom.myssql.jdbbc.DDrivver"","jddbc:myssql:/llocaalhoost:33006/jjdbcc_dbb",""rooot","myysqlladmmin""); /第三三种方法法 SSysttem.outt.prrinttln("第三三种方法法:"+cu.opeenCoonneectiion(); TTesttStaatemmentt.geetSttateemennt(); TesstSttateemennt.ccreaateTTablle(); 测试结果: 使用SStattemeent 执行DDML更新 Innserrt TestSStattemeent.javvapackaage comm.miichaael.jdbbc; impportt jaava.sqll.Coonneectiion; immporrt jjavaa.sqql.SSQLEExceeptiion; immporrt jjavaa.sqql.SStattemeent; puubliiccllasss TeestSStattemeent puubliicsttatiicvooid gettStaatemmentt() CConnnecttionn coonn = nnew ConnnecctioonUttil().oopennConnnecctioon(); tryy Staatemmentt sttmt = cconnn.crreatteSttateemennt(); SSysttem.outt.prrinttln(stmmt); caatchh (SSQLEExceeptiion e) / TTODOO Auuto-genneraatedd caatchh bllockk e.priintSStacckTrracee(); puubliicsttatiicvooid creeateeTabble() /DDLL数据定定义语句句 CConnnecttionn coonn = nnew ConnnecctioonUttil().oopennConnnecctioon(); Strringg sqql = "ccreaate tabble CusstommerTTbl(id intt prrimaary keyy auuto_inccremmentt,naame varrchaar(220),emaail varrchaar(220)" trry Sttateemennt sstmtt = connn.ccreaateSStattemeent(); /执执行SQQL语句句 sttmt.exeecutte(ssql); ccatcch (SQLLExccepttionn e) / TODDO AAutoo-geenerrateed ccatcch bblocck ee.prrinttStaackTTracce(); fiinallly iff(coonn!=nuull) tryy coonn.cloose(); caatchh (SSQLEExceeptiion e) connn = nuull; ee.prrinttStaackTTracce(); /DDML数数据操作作语句-CRRUD:creeatee、reetriive、uupdaate、ddeleete ppubllicsstatticvvoidd teestIInseert() /DDLL数据定定义语句句 CConnnecttionn coonn = nnew ConnnecctioonUttil().oopennConnnecctioon(); Strringg sqql = "iinseert intto CCusttomeerTbbl(nnamee,emmaill) vvaluues('Miichaael'','mmichhaellm')"" tryy Staatemmentt sttmt = cconnn.crreatteSttateemennt(); /执行行SQLL语句 stmmt.eexeccuteeUpddatee(sqql); caatchh (SSQLEExceeptiion e) / TTODOO Auuto-genneraatedd caatchh bllockk e.priintSStacckTrracee(); finnallly if(cconnn!=nnulll) trry cconnn.cllosee(); ccatcch (SQLLExccepttionn e) coonn = nnulll; e.pprinntSttackkTraace(); Main.javvapackaage comm.miichaael.maiin; impportt coom.mmichhaell.jddbc.ConnnecctioonUttil; immporrt ccom.micchaeel.jjdbcc.TeestSStattemeent; puubliiccllasss Maain /* * pparaam aargss */ pubbliccstaaticcvoiid mmainn(Sttrinng arrgs) CoonneectiionUUtill cuu = neww CoonneectiionUUtill(); /第一一种方法法 SSysttem.outt.prrinttln("第一一种方法法:"+cu.gettConnnecctioon(); /第二种种方法 Syysteem.oout.priintlln(""第二种种方法:"+ccu.ggetCConnnecttionn("ccom.myssql.jdbbc.DDrivver"","jddbc:myssql:/llocaalhoost:33006/jjdbcc_dbb",""rooot","myysqlladmmin""); /第三三种方法法 SSysttem.outt.prrinttln("第三三种方法法:"+cu.opeenCoonneectiion(); TTesttStaatemmentt.geetSttateemennt(); /TTesttStaatemmentt.crreatteTaablee(); TTesttStaatemmentt.teestIInseert(); 测试结果: