資源描述:
《使用extjs和java對oracle中的blob類型圖片進(jìn)行存取》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、1、背景因?yàn)轫?xiàng)目需要,對Oracle數(shù)據(jù)庫中的Blob類型照片進(jìn)行存儲(chǔ)和展示,經(jīng)過多次試驗(yàn)并且結(jié)合網(wǎng)上查閱的資料,取得了一定的階段性成果,特地回顧整理下來,方便其他朋友參考,也方便自己以后查閱。2、開發(fā)環(huán)境已經(jīng)語言在Netbeans環(huán)境下進(jìn)行開發(fā),前臺(tái)界面使用Extjs,后臺(tái)開發(fā)使用Java語言的Servlet3、過程以及實(shí)例圖片存儲(chǔ):使用的是客戶端本地存儲(chǔ)的圖片,上傳到后臺(tái)服務(wù)器上的Oracle數(shù)據(jù)庫中存儲(chǔ)起來參考代碼:response.setContentType("text/html;char
2、set=UTF-8");try{Connectionconn;Statementstmt;ResultSetrs;intbufferSize;StringconnectString;Class.forName("oracle.jdbc.driver.OracleDriver");connectString="jdbc:oracle:thin:@數(shù)據(jù)庫IP地址:1521:Orcl";conn=(OracleConnection)DriverManager.getConnection(connectSt
3、ring,"用戶名","密碼");stmt=conn.createStatement();Filef=newFile("c:\a.jpg");//圖片在客戶端的地址InputStreamfis=newFileInputStream(f);OutputStreamout=null;BufferedInputStreamin=null;try{conn.setAutoCommit(false);//這句很關(guān)鍵,先不要提交stmt.executeUpdate("insertinto數(shù)據(jù)庫表名values
4、(11111117,3,empty_blob(),3,11111112,999999,sysdate)");//在Oracle數(shù)據(jù)庫中一定要先插入一個(gè)空的blob數(shù)據(jù)empty_blob(),然后用下面的語句進(jìn)行更新rs=stmt.executeQuery("select*from數(shù)據(jù)庫表名wherecustomerseq='11111117'andrownum<=1forupdate");if(rs.next()){Blobblob=rs.getBlob("photo");out=((oracle
5、.sql.BLOB)blob).getBinaryOutputStream();bufferSize=((oracle.sql.BLOB)blob).getBufferSize();in=newBufferedInputStream(fis,bufferSize);byte[]b=newbyte[bufferSize];intcount=in.read(b,0,bufferSize);while(count!=-1){out.write(b,0,count);count=in.read(b,0,bu
6、fferSize);}out.close();out=null;in.close();in=null;conn.commit();}}catch(Exceptione){e.printStackTrace();}}catch(Exceptione){e.printStackTrace();}照片顯示:前臺(tái)Extjs代碼:{id:'browseImage',name:'browseImage',xtype:'component',//或者xtype:'component',width:200,//圖片
7、寬度height:320,//圖片高度autoEl:{tag:'img',src:'../ServletName'//Servlet名稱}}后臺(tái)Servlet代碼:connectString="jdbc:oracle:thin:@數(shù)據(jù)庫IP地址:1521:Orcl";conn=(OracleConnection)DriverManager.getConnection(connectString,"用戶名","密碼");Statementstate=conn.createStatement();Str
8、ingsqlstr="select*from數(shù)據(jù)庫表名wherecustomerseq='11111118'";ResultSetrs=null;rs=state.executeQuery(sqlstr);rs.next();java.sql.Blobblob=(Blob)rs.getBlob("photo");state.close();conn.close();InputStreamimageStream=blob.getBinaryStream();longnL