版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1Class,java.lang–PropertyDescriptorsunApache的beanutils–不是sunJDk 2
以下是SUNJava.sql.Driver用于創(chuàng)建被DriverManager用于管理一組Driver一個(gè)url要想獲取接就得一個(gè)url字符串Java.sql.Statment–mysql或者.oacleDB數(shù)據(jù)庫(kù)服務(wù)器發(fā)出Sql查詢(xún)時(shí)即執(zhí)行select連接數(shù)據(jù)庫(kù)的步驟:1:2:DriverManager.getConnection獲取連接3:statement4:通過(guò)調(diào)用方法excuteQuery()excute()batch()AddBatch()如何和管理驅(qū)動(dòng)器類(lèi)在測(cè)試有幾個(gè)驅(qū)動(dòng)器時(shí)沒(méi)有mysql驅(qū)動(dòng)器也有是因?yàn)镴DBC4.0META-INF/services/java.sql.Driver以下是時(shí)出現(xiàn)的問(wèn)題:(DriverManager.registerDriver(newcom.mysql.jdbc.Driver());)newDriver時(shí)執(zhí)行了一次靜態(tài)代碼塊里面就是一次,registerDriver時(shí)又執(zhí)行了一次1:Demo1這個(gè)類(lèi)了兩次MySql的Driver–重復(fù)2Demo1這個(gè)類(lèi)對(duì)Mysql的驅(qū)動(dòng)產(chǎn)生了依賴(lài)(Class.forname(commysql.jdbc.Driver沒(méi)有newClassname時(shí)只執(zhí)行了一次靜態(tài)代碼塊,靜態(tài)代碼快在編譯時(shí)字節(jié)碼在加載某一Driver類(lèi)時(shí),它應(yīng)該創(chuàng)建自己的實(shí)例并向DriverManager該實(shí)例。這意味著用戶(hù)可以通過(guò)調(diào)用以下程序加載和一個(gè)驅(qū)動(dòng)程序使用以下方式的優(yōu)點(diǎn)2:不會(huì)重復(fù)的System.err.println(d);//d是一個(gè)接口,因?yàn)榻杩谑遣粫?huì)DriverManager類(lèi)的方法getConnection和getDrivers已經(jīng)得到提高以支持JavaStandardEditionServiceProviderJDBC4.0DriversMETA-INF/services/java.sql.Driver文件包含java.sql.Driver的JDBC驅(qū)動(dòng)程序?qū)崿F(xiàn)的名稱(chēng)。例如,要加載my.sql.Driver類(lèi),META-INF/services/java.sql.Driverpublicvoidtest2()throws Stringurl="jdbc:mysql://45:3306/emps?characterEncoding=UTF-8";url="jdbc:oracle:thin:@01:1521:XE";Connectioncon=DriverManager.getConnection(url,"sysassysdba","1234");//如果連接是Mysql//如果連接是Oracle:}file文件命名為*.properties記得修改編碼類(lèi)型右擊propertiesUTF-8;第二步:這個(gè)資源文utilsimportjava.io.InputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.util.Properties;publicclassConnUtilsprivatestaticConnectioncon;//是靜態(tài)的所以只有一個(gè)因?yàn)榻涌诤?/資源文InputStreamin=//用類(lèi)加載器來(lái)PropertiespnewProperties();//里面的信Stringdriver=p.getProperty("my_driver");Stringurl=p.getProperty("my_url");Stringname=p.getProperty("my_name");Stringpwd=p.getProperty("my_pwd");con=DriverManager.getConnection(url,}catch(ExceptionthrownewRuntimeException(e);//異常轉(zhuǎn)換(因?yàn)槔锩鎸?xiě)了一個(gè)new換}}publicstaticConnectionreturn}}packageimportimportcom.mysql.jdbc.Connection;importcn.utils.connectutil;publicclassDiaoyong{publicvoidConnectioncon=connectutil.getConnection();}}使用這樣的方式以后再連接其他的數(shù)據(jù)庫(kù)的時(shí)候,直接修改properties接口圖形化數(shù)據(jù)庫(kù)管理工具executeUpdate就是用于執(zhí)行insert,delte,update語(yǔ)句的:返回一個(gè)int類(lèi)型的值,說(shuō)明影響了數(shù)據(jù)庫(kù)的幾行executeUpdate(Stringsql)-用于執(zhí)行好的sql語(yǔ)SQLINSERT、UPDATEDELETE語(yǔ)句(SQLDDL)executeUpdate(Stringsql,intautoGeneratedKeys)-第二個(gè)參數(shù)是指是否返回?cái)?shù)據(jù)表中寫(xiě)入idSQLStatementidINTPRIMARYKEYAUTO_INCREMENT,//primarykeyNAMEage往里面寫(xiě)數(shù)據(jù),mysql12:獲取連接DriverManager.geConnection();34:執(zhí)行sql語(yǔ)句以下是執(zhí)行一個(gè)靜態(tài)的sqlpackagecn;importimportimportcomimportpublicclassDiaoyong{publicvoidtest1()throws//獲取連接DriverManager.getConnection();前面的這兩步都是在靜態(tài)代碼塊執(zhí)行的Connectioncon=connectutil.getConnection();Statement//執(zhí)行sql('inta=st.executeUpdate(sql);//executeUpdate用于執(zhí)行所給出的sql語(yǔ)句;返回執(zhí)行的sql數(shù)}}動(dòng)態(tài)的sqlpackagecn.demo;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.Statement;importjava.util.Scanner;importimportpublicclassDemo2Scannersc=newpublicvoidtest2()throws//2:獲取連接DriverManager.getConnection(..);Connectioncon=Statementst=con.createStatement();Stringnm=scnextLine();Stringaa=//4:執(zhí)行sqlStringsql="insertintocar(name,age)values('"+nm+"',"+aa+")";inta=st.executeUpdate(sql);}}publicvoidtest3()throwsException{Connectioncon=Statementst=con.createStatement();Stringsql="updatecarsetname='Benz',age=130whereid=2";inta=st.executeUpdate(sql);}publicvoidtest4()throwsException{Connectioncon=Statementst=con.createStatement();Stringsqldeletefromcarwhereid=1";inta=st.executeUpdate(sql);}//通過(guò)autoGenerationKeypublicvoidtest5()throwsException{Connectioncon=Statementst=con.createStatement();Stringsql="insertintocar(name,age)intast.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS);//返回生成的主鍵//獲取返回的ResultSetrs=st.getGeneratedKeys();intidrs.getInt(1);//1columnIndexthefirstis1,thesecondis 在mysql1System.err.println("新的id}}}executeQuery(Stringsql)slectexecuteQuery(Stringsql)slect執(zhí)行給定的SQL語(yǔ)句,該語(yǔ)句返回單個(gè)ResultSet對(duì)象getXxxxgetString(1),getInt(..)getObject所類(lèi)型selectpublicvoidtest1()throwsException{Connectionco=ConnUtils.getConnection();Statementst=co.createStatement(); Stringsql="select*fromcar";ResultSetrs=st.executeQuery(sql);intid=Stringname=intage=rs.getInt(3);}}以下的execute可以執(zhí)行所有的sql語(yǔ)句,返回的boolean是指是進(jìn)行的查詢(xún)嗎,即select如果執(zhí)行的是select則為true,否則都是false。execute(StringSQLexecute(Stringsql,intSQL(該語(yǔ)句可能返回多個(gè)結(jié)果),并通知驅(qū)動(dòng)程序所有自動(dòng)生成的鍵都應(yīng)該publicvoidtest2()throwsException{Connectionco=ConnUtils.getConnection();///獲取操作對(duì)象(獲取操作sql語(yǔ)句的操作對(duì)象)CreatesaStatementobjectforsendingSQLstatementstothedatabase.Statementst=System.err.println("st booleanboo=st.execute("select*fromcar");//Parameters:sqlanySQLstatementResultSetrsst.getResultSet();//檢索當(dāng)前的結(jié)果作為一個(gè)ResultSet象
}}}addBatch(Stringsql)sqlSQLStatementpublicvoidtest3()throwsException{Connectionco=ConnUtils.getConnection();Statementst=co.createStatement();CreatesaStatementobjectforsendingSQLstatementstothedatabase.for(intst.addBatch("insertintocar(name,agevalues('Jack"+i+"',44)");//}st.addBatch("updatecarsetage=55");//影響了10int[]rows=st.executeBatch();//11數(shù)組的長(zhǎng)度,顯示的是執(zhí)行了幾個(gè)sql語(yǔ)句System.err.println("執(zhí)行了SQL語(yǔ)句數(shù)量:"+rows.length);//11{。。}、里面的每intsum=for(inta:rows){}}3011個(gè)sql1:類(lèi)statement由mysql,oracle…實(shí)現(xiàn)現(xiàn)。4個(gè)方法1:executeUpdate-可以通過(guò)接收用戶(hù)newScanner(System.in);的參數(shù)來(lái)動(dòng)態(tài)的向數(shù)2:resulset由mysql,oracle…實(shí)現(xiàn)現(xiàn)。2個(gè)方法2:getXxxxx–etc..在以下設(shè)置參數(shù)的示例中,conSETSALARY=?WHEREID=pstmt.setInt(2,5:PreparedStatment類(lèi)--sql1:可以使用?占位筆符號(hào)來(lái)處理sql注入的問(wèn)題。示預(yù)編譯的SQL語(yǔ)句的對(duì)象。2:SQL語(yǔ)句被預(yù)編譯并在PreparedStatement對(duì)象中。然后可以使用此對(duì)象多次高效地執(zhí)行該語(yǔ)3:可能保存大數(shù)據(jù)到數(shù)據(jù)庫(kù)中去。-保存大數(shù)據(jù)BLOB-BinaryLob字節(jié)類(lèi)型的大數(shù)據(jù)CLOB-CharacterLobpublicvoidtest_login()throwsException{Connectionco=ConnUtils.getConnection();Scannersc=newScanner(System.in);Stringnm=sc.nextLine();Stringpwdsc.nextLine();//用組拼sql Stringsql=”select*froms_userwherelogonName=’”+nm+”’andStringsql="select*froms_userwherelogonName=?andPreparedStatementpst=pst.setString(2,pwd);ResultSetrspst.executeQuery();//}}在SQLyog界面操作,將jaa’k輸入到users1or1’=’12’or1’;’deletefrom輸出:select*froms_userwherelogonName=’jack’andlogonPwd=’1’;’deletefrom用preparedStatementpublicvoidtest2()throwsConnectioncon=Stringnm=sc.nextLine();Stringaa=Stringsql="insertintocar(name,age)values(?,?)";PreparedStatementpst=con.prepareStatement(sql);pst.setInt(2,intapst.executeUpdate();//不能再有參數(shù)了}OracleCLOB在oracle中叫clobMYsql–TextNAMEVARCHAR(30),content用pstpublicvoidsavefile()throwsException{Connectionco=ConnUtils.getConnection();Stringsql="insertintonote(name,content)values(?,?)";PreparedStatementpstco.prepareStatement(sql);//importjava.sql因?yàn)镺penDeclarationpst.setString(1,"aaaa.txt");pst.setCharacterStream(2,newFileReader("./a.txt"));//("./src/a.file/a.txt")//(./xml/uers.xml)}publicvoidread()throwsException{Connectionco=ConnUtils.getConnection();Stringsql="select*fromnotewhereid=1";Statementst=co.createStatement();ResultSetrs=st.executeQuery(sql);if(rs.next())Readerr=rs.getCharacterStream("content");BufferedReaderbr=newBufferedReader(r);Stringline=null;}}}$$$$$$$$$轉(zhuǎn)換字體使能夠顯示中文第一步:創(chuàng)建一個(gè)表,字段類(lèi)型為blobclobNAMEVARCHAR(30),contentpublicvoidsaveimg()throwsException{Connectionco=ConnUtils.getConnection();Stringsql="insertintoimg(name,content)values(?,?)";PreparedStatementpst=co.prepareStatement(sql);pst.setString(1,"aaaa.png");pst.setBinaryStream(2,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年三季度報(bào)天津地區(qū)A股負(fù)債合計(jì)排名前十大上市公司
- 2025版城市基礎(chǔ)設(shè)施建設(shè)委托合同范例大全3篇
- 2025年樹(shù)林資源綜合利用與循環(huán)經(jīng)濟(jì)承包合同范本3篇
- 2025年食堂食品安全風(fēng)險(xiǎn)評(píng)估承包合同3篇
- 2025年山東貨運(yùn)從業(yè)資格證500道題目及答案
- 2025版停薪留職合同模板:民營(yíng)企業(yè)員工休整計(jì)劃書(shū)3篇
- 二零二五年度城市綠化工程項(xiàng)目采購(gòu)安裝合同3篇
- 二零二五年度地質(zhì)勘探臨時(shí)駕駛員用工合同4篇
- 2025年度物流園區(qū)個(gè)人運(yùn)輸承包服務(wù)協(xié)議2篇
- 2025年度模板木方項(xiàng)目合作協(xié)議范本大全3篇
- 土地買(mǎi)賣(mài)合同參考模板
- 2025高考數(shù)學(xué)二輪復(fù)習(xí)-專(zhuān)題一-微專(zhuān)題10-同構(gòu)函數(shù)問(wèn)題-專(zhuān)項(xiàng)訓(xùn)練【含答案】
- 新能源行業(yè)市場(chǎng)分析報(bào)告
- 2025年天津市政建設(shè)集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 自愿斷絕父子關(guān)系協(xié)議書(shū)電子版
- 你劃我猜游戲【共159張課件】
- 專(zhuān)升本英語(yǔ)閱讀理解50篇
- 中餐烹飪技法大全
- 新型電力系統(tǒng)研究
- 滋補(bǔ)類(lèi)用藥的培訓(xùn)
- 北師大版高三數(shù)學(xué)選修4-6初等數(shù)論初步全冊(cè)課件【完整版】
評(píng)論
0/150
提交評(píng)論