资源描述:
《使用extjs和java对oracle中的blob类型图片进行存取》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1、背景因为项目需要,对Oracle数据库中的Blob类型照片进行存储和展示,经过多次试验并且结合网上查阅的资料,取得了一定的阶段性成果,特地回顾整理下来,方便其他朋友参考,也方便自己以后查阅。2、开发环境已经语言在Netbeans环境下进行开发,前台界面使用Extjs,后台开发使用Java语言的Servlet3、过程以及实例图片存储:使用的是客户端本地存储的图片,上传到后台服务器上的Oracle数据库中存储起来参考代码: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:@数据库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);//这句很关键,先不要提交stmt.executeUpdate("insertinto数据库表名values
4、(11111117,3,empty_blob(),3,11111112,999999,sysdate)");//在Oracle数据库中一定要先插入一个空的blob数据empty_blob(),然后用下面的语句进行更新rs=stmt.executeQuery("select*from数据库表名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();}照片显示:前台Extjs代码:{id:'browseImage',name:'browseImage',xtype:'component',//或者xtype:'component',width:200,//图片
7、宽度height:320,//图片高度autoEl:{tag:'img',src:'../ServletName'//Servlet名称}}后台Servlet代码:connectString="jdbc:oracle:thin:@数据库IP地址:1521:Orcl";conn=(OracleConnection)DriverManager.getConnection(connectString,"用户名","密码");Statementstate=conn.createStatement();Str
8、ingsqlstr="select*from数据库表名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