Class文件如下:
import java.io.*; import java.sql.*; import java.util.Date ; import oracle.sql.*; import javax.servlet.http.*; import org.apache.struts.action.*; import org.apache.struts.upload.*;
public class UploadAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (form instanceof UploadForm) { Date date = new Date(); System.out.println("-------------File Upload Begins-------------------") ; UploadForm theForm = (UploadForm) form; file://通过struts的FormFile类来获得上传的文件,前台jsp页面对应的代码 file://<html:file property="theFile" /> FormFile file = theForm.getTheFile(); Connection conn = null; PreparedStatement ps = null ;
String union_Id = "" ; String union_Version = "" ; union_Id = theForm.getUnion_Id() ; union_Version = theForm.getUnion_Version() ; file://actionpart是数据库表中的字段名,由于表中有多个blob字段,所以用变量来表示其名称 String actionpart = theForm.getActionpart() ; System.out.println("actionpart is:"+actionpart) ; file://取得数据库连接,dbPool的源代码附在后面 dbPool dbp = new dbPool(); conn = dbp.getConnection() ;
ResultSet BlobDetails = null; Statement stmt = null;
try { InputStream stream = null; FileInputStream fstream = null; stream = file.getInputStream(); System.out.println("------------uploadFileSize is : "+stream.available() +"------------") ;
conn.setAutoCommit(false); stmt = conn.createStatement(); file://先用empty_blob()来初始化该字段 sql = " update regunion set " + actionpart + " = empty_blob() where union_id= " + union_Id +" and union_Version = "+ union_Version; stmt.executeUpdate(sql) ; conn.commit() ; stmt.close() ; stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); sql = "select " +actionpart + " from regunion where union_id= " + union_Id +" and union_Version = "+ union_Version + " for update "; BlobDetails = stmt.executeQuery(sql);
if (BlobDetails.next()) { BLOB l_mapBlob = (BLOB)BlobDetails.getBlob(1); OutputStream l_blobOutputStream = ((BLOB) l_mapBlob).getBinaryOutputStream();
byte[] l_buffer = new byte[10* 1024];
int l_nread = 0; while ((l_nread=stream.read(l_buffer)) != -1) // Read from file { l_blobOutputStream.write(l_buffer,0,l_nread); // Write to Blob }
stream.close(); l_blobOutputStream.close (); } BlobDetails.close(); conn.commit() ; } catch (FileNotFoundException fnfe) { fnfe.printStackTrace() ; return mapping.findForward("error"); } catch (IOException ioe) { ioe.printStackTrace() ; return mapping.findForward("error");; } catch(SQLException ex){ ex.printStackTrace() ; return mapping.findForward("error");; }finally{ if(conn != null){ try{ stmt.close(); conn.close() ; }catch(Exception sqle){ sqle.printStackTrace() ; } } }
request.setAttribute("union_Id",union_Id) ; request.setAttribute("union_Version",union_Version) ; System.out.println("-------------File Upload Ends-------------------") ; return mapping.findForward("success"); }else{ return null; } } }
附:dbPool.java程序
package com.prient.nbsc.unifylaw; import java.sql.*; import com.prient.nbsc.common.DBPOOL; public class dbPool { public Connection getConnection(){ try { Connection conn = null; Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String bridge = "jdbc:oracle:thin:@10.6.89.2:1521:sjk"; conn = DriverManager.getConnection(bridge,"user","user") ; return conn; } catch (Exception e) { System.out.println(e); return null; } } }
[系统软件]EXP-00008: ORACLE error 904 encountered的解决方… [常用软件]PB7 连接 Oracle 的配置方法 [Web开发]oracle Export and Import 简介 [Web开发]ADO访问Oracle结果集的心得 [JAVA开发]JDBC+Hibernate将Blob数据写入Oracle [JAVA开发]J2EE应用中与Oracle数据库的连接 [JAVA开发]Oracle Application Serve_ [其他]HP-UXrx2600B.11.22Uia64安装oracle9i9.2foria64手… [其他]在RedhatEnterpriseserver3上安装oracle9iR2的注意… [其他]PROC++批量导入导出ORACLE数据库表
|