Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之03JDBC Statement13855.docx
Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之03.JDBC Statement(1)上季我们建建立了与数数据库的连连接,本季季我们将对对数据库进进行操作使使用Staatemeent 执执行DDLL、使用SStateementt 执行DDML,常常用的插入入、更新、删删除及查询询数据哈 Staatemeent 简简介Stattemennt 提供供了一个操操作数据库库语句的功功能,可通通过它来创创建表、插插入记录、修修改记录、删删除记录等等操作 获得SStateementt可以从数数据库连接接Connnectiion中获获得StaatemeentConneectioon coonn = neww ConnnecttionUUtil().geetConnnecttion(); Sttatemment stmtt = cconn.creaateSttatemment();ConneectioonUtiil.jaavapackaage ccom.mmichaael.jjdbc; impoort jjava.sql.Connnectiion; iimporrt jaava.ssql.DDriveerMannagerr; impport javaa.utiil.Prroperrtiess; pubbliccclasss ConnnecttionUUtil /第一种种方法 puublicc Connnecttion getCConneectioon() Connnectiion cconn = nuull; ttry /Cllass.forNName加加载驱动 CClasss.forrNamee("coom.myysql.jdbcc.Driiver""); /DrivverMaanageer获得连连接 connn = DrivverMaanageer.geetConnnecttion("jdbbc:myysql:/loocalhhost:33066/jdbbc_dbb","rroot"","myysqlaadminn"); rreturrn coonn; cattch (Exceeptioon e) e.prinntStaackTrrace(); rreturrnnulll; /第二种种方法 puublicc Connnecttion getCConneectioon(Sttringg driiver,Striing uurl,SStrinng usser,SStrinng paasswoord) Connnectiion cconn = nulll; trry /Claass.fforNaame加载载驱动 Cllass.forNName(drivver); /DrriverrManaager获获得连接 cconn = DrriverrManaager.getCConneectioon(urrl,usser,ppasswword); retturn connn; ccatchh (Exxcepttion e) e.prrintSStackkTracce(); retturnnnull; /第第三种方法法 publlic CConneectioon oppenCoonnecctionn() SStrinng drriverr = """ Sttringg urll = """ Sttringg useer = "" SStrinng paasswoord = "" Proppertiies pprop = neew Prroperrtiess(); CConneectioon coonn = nulll; trry /加载属属性文件 pprop.loadd(thiis.geetClaass().gettClasssLoaader().geetRessourcceAsSStreaam("DDBConnfig.proppertiies"); drriverr = pprop.getPPropeerty("driiver""); urrl = propp.gettProppertyy("urrl"); userr = pprop.getPPropeerty("useer"); passswordd = pprop.getPPropeerty("passsworrd"); /Cllass.forNName加加载驱动 CClasss.forrNamee(driiver); /DDriveerMannagerr获得连接接 connn = DDriveerMannagerr.gettConnnectiion(uurl,uuser,passswordd); reeturnn connn; catcch (EExcepptionn e) e.pprinttStacckTraace(); rreturrnnulll; TestSStateementt.javvapackaage ccom.mmichaael.jjdbc; impoort jjava.sql.Connnectiion; iimporrt jaava.ssql.SSQLExxcepttion; impoort jjava.sql.Stattemennt; puubliccclasss TeestSttatemment pubblicsstatiicvoiid geetStaatemeent() Connnecttion connn = nnew CConneectioonUtiil().opennConnnectiion(); tryy Sttatemment stmtt = cconn.creaateSttatemment(); Syystemm.outt.priintlnn(stmmt); cattch (SQLEExcepptionn e) / TODOO Autto-geeneraated catcch bllock ee.priintSttackTTracee(); Main.javaapackaage ccom.mmichaael.mmain; impoort ccom.mmichaael.jjdbc.ConnnectiionUttil; iimporrt coom.miichaeel.jddbc.TTestSStateementt; pubbliccclasss Maiin /* * paaram argss */ ppubliicstaaticvvoid mainn(Strring arrgs) ConnnecttionUUtil cu = neww ConnnecttionUUtil(); /第一种方方法 Sysstem.out.prinntln("第一种种方法:""+cu.getCConneectioon(); /第第二种方法法 Systtem.oout.pprinttln(""第二种方方法:"+cu.ggetCoonnecctionn("coom.myysql.jdbcc.Driiver"","jdbbc:myysql:/loocalhhost:33066/jdbbc_dbb","rroot"","myysqlaadminn"); /第三三种方法 SSysteem.ouut.prrintlln("第第三种方法法:"+ccu.oppenCoonnecctionn(); TesttStattemennt.geetStaatemeent(); 测试结果: 使用SStateementt 执行DDDL可以使用用Stattemennt来执行行一个数据据定义语句句,例如:创建一张张表TestSStateementt.javvapackaage ccom.mmichaael.jjdbc; impoort jjava.sql.Connnectiion; iimporrt jaava.ssql.SSQLExxcepttion; impoort jjava.sql.Stattemennt; puubliccclasss TeestSttatemment pubblicsstatiicvoiid geetStaatemeent() Connnecttion connn = nnew CConneectioonUtiil().opennConnnectiion(); tryy Sttatemment stmtt = cconn.creaateSttatemment(); Syystemm.outt.priintlnn(stmmt); cattch (SQLEExcepptionn e) / TODOO Autto-geeneraated catcch bllock ee.priintSttackTTracee(); pubblicsstatiicvoiid crreateeTablle() /DDDL数据定定义语句 CConneectioon coonn = neww ConnnecttionUUtil().oppenCoonnecctionn(); SStrinng sqql = "creeate tablle CuustommerTbbl(idd intt priimaryy keyy autto_inncremment,namee varrcharr(20),emaail vvarchhar(220)"" tryy Sttatemment stmtt = cconn.creaateSttatemment(); /执行SQQL语句 sstmt.execcute(sql); ccatchh (SQQLExcceptiion ee) / TOODO AAuto-geneerateed caatch blocck e.pprinttStacckTraace(); fiinallly iff(connn!=nnull) try connn.cloose(); ccatchh (SQQLExcceptiion ee) cconn = nuull; ee.priintSttackTTracee(); Main.javaapackaage ccom.mmichaael.mmain; impoort ccom.mmichaael.jjdbc.ConnnectiionUttil; iimporrt coom.miichaeel.jddbc.TTestSStateementt; pubbliccclasss Maiin /* * paaram argss */ ppubliicstaaticvvoid mainn(Strring arrgs) ConnnecttionUUtil cu = neww ConnnecttionUUtil(); /第一种方方法 Sysstem.out.prinntln("第一种种方法:""+cu.getCConneectioon(); /第第二种方法法 Systtem.oout.pprinttln(""第二种方方法:"+cu.ggetCoonnecctionn("coom.myysql.jdbcc.Driiver"","jdbbc:myysql:/loccalhoost:33306/jdbcc_db"","rooot","myssqladdmin""); /第三种种方法 Syystemm.outt.priintlnn("第三三种方法:"+cuu.opeenConnnecttion(); TTestSStateementt.gettStattemennt(); TesttStattemennt.crreateeTablle(); 测试结果: 使用SStateementt 执行DDML更新 Inssert TestSStateementt.javvapackaage ccom.mmichaael.jjdbc; impoort jjava.sql.Connnectiion; iimporrt jaava.ssql.SSQLExxcepttion; impoort jjava.sql.Stattemennt; puubliccclasss TeestSttatemment pubblicsstatiicvoiid geetStaatemeent() Connnecttion connn = nnew CConneectioonUtiil().opennConnnectiion(); tryy Sttatemment stmtt = cconn.creaateSttatemment(); Syystemm.outt.priintlnn(stmmt); cattch (SQLEExcepptionn e) / TODOO Autto-geeneraated catcch bllock ee.priintSttackTTracee(); pubblicsstatiicvoiid crreateeTablle() /DDDL数据定定义语句 CConneectioon coonn = neww ConnnecttionUUtil().oppenCoonnecctionn(); SStrinng sqql = "creeate tablle CuustommerTbbl(idd intt priimaryy keyy autto_inncremment,namee varrcharr(20),emaail vvarchhar(220)"" tryy Sttatemment stmtt = cconn.creaateSttatemment(); /执行SQQL语句 sstmt.execcute(sql); ccatchh (SQQLExcceptiion ee) / TOODO AAuto-geneerateed caatch blocck e.pprinttStacckTraace(); fiinallly iff(connn!=nnull) try connn.cloose(); ccatchh (SQQLExcceptiion ee) cconn = nuull; ee.priintSttackTTracee(); /DML数数据操作语语句-CCRUD:creaate、rretriive、uupdatte、deeletee publlicsttaticcvoidd tesstInssert() /DDL数数据定义语语句 Connnecttion connn = nnew CConneectioonUtiil().opennConnnectiion(); Strring sql = "iinserrt innto CCustoomerTTbl(nname,emaiil) vvaluees('MMichaael','micchaelljavva.coom')"" tryy Sttatemment stmtt = cconn.creaateSttatemment(); /执行SQQL语句 sstmt.execcuteUUpdatte(sqql); cattch (SQLEExcepptionn e) / TODOO Autto-geeneraated catcch bllock ee.priintSttackTTracee(); finaally if(coonn!=nulll) tryy coonn.cclosee(); cattch (SQLEExcepptionn e) connn = nulll; e.pprinttStacckTraace(); Main.javaapackaage ccom.mmichaael.mmain; impoort ccom.mmichaael.jjdbc.ConnnectiionUttil; iimporrt coom.miichaeel.jddbc.TTestSStateementt; pubbliccclasss Maiin /* * paaram argss */ ppubliicstaaticvvoid mainn(Strring arrgs) ConnnecttionUUtil cu = neww ConnnecttionUUtil(); /第一种方方法 Sysstem.out.prinntln("第一种种方法:""+cu.getCConneectioon(); /第第二种方法法 Systtem.oout.pprinttln(""第二种方方法:"+cu.ggetCoonnecctionn("coom.myysql.jdbcc.Driiver"","jdbbc:myysql:/loocalhhost:33066/jdbbc_dbb","rroot"","myysqlaadminn"); /第三三种方法 SSysteem.ouut.prrintlln("第第三种方法法:"+ccu.oppenCoonnecctionn(); TesttStattemennt.geetStaatemeent(); /TTestSStateementt.creeateTTablee(); TTestSStateementt.tesstInssert(); 测试结果: