带Blob的附件上传

/**
     *
     * @param uploads
     *            文件集合
     * @param uploadFileNames
     *            文件名称集合
     * @param apply_id_name
     *            外键 id 字段名称
     * @param attach_id_fname
     *            编号,流水号,本身的id
     * @param attach_name_fname
     *            附件名称字段
     * @param attach_fname
     *            附件字段
     * @param tname
     *            表名
     * @param apply_id
     *            外键 id 字段名称 对应的值
     * @return
     * @throws Exception
     */ sql

public boolean insermultipleFile(List<File> uploads, 数据库

            List<String> uploadFileNames, String apply_id_name,             String attach_id_fname, String attach_name_fname,             String attach_fname, String tname, String apply_id)             throws Exception {         // String insert_sql =         // "insert into t_base_attach(attach_id,apply_id,attach_name,attach,creater,creatime,material_num) values "         // + " (?,?,?,empty_blob(),?,?,?)";         // String update_sql =         // "select attach from  t_base_attach where attach_id=? for update";         StringBuffer insert_sql = new StringBuffer();         insert_sql.append("insert into ");         insert_sql.append(tname);         insert_sql.append("(");         insert_sql.append(attach_id_fname).append(",");         insert_sql.append(apply_id_name).append(",");         insert_sql.append(attach_name_fname).append(",");         insert_sql.append(attach_fname);         insert_sql.append(") values ");         insert_sql.append(" (?,?,?,empty_blob()) ");         String update_sql = "select " + attach_fname + " from  " + tname                 + " where " + attach_id_fname + "=? for update";         Connection conn = null;         PreparedStatement ps = null;         ResultSet rs = null;         String attach_id = "";         try {             log.debug(insert_sql.toString());             log.debug(update_sql.toString());             conn = jt.getDataSource().getConnection();             // conn.setAutoCommit(true);             for (int i = 0; i < uploads.size(); i++) {                 attach_id = queryGuidFromOracle();                 ps = conn.prepareStatement(insert_sql.toString());                 ps.setString(1, attach_id);                 ps.setString(2, apply_id);                 ps.setString(3, uploadFileNames.get(i));                 ps.executeUpdate();                 ps = conn.prepareStatement(update_sql);                 ps.setString(1, attach_id);                 rs = ps.executeQuery();                 if (rs.next()) {                     oracle.sql.BLOB blob = (oracle.sql.BLOB) rs                             .getBlob(attach_fname);                     // String strfilename = rs.getString("VC2FILENAME");                     // 到数据库的输出流                     OutputStream outStream = blob.getBinaryOutputStream();                     // 这里用一个文件模拟输入流                     File file = uploads.get(i);                     InputStream fin = null;                     try {                         fin = new FileInputStream(file);                     } catch (FileNotFoundException e) {                         // TODO Auto-generated catch block                         e.printStackTrace();                     }                     // 将输入流写到输出流                     byte[] b = new byte[blob.getBufferSize()];                     int len = 0;                     while ((len = fin.read(b)) != -1) {                         outStream.write(b, 0, len);                         // blob.putBytes(1,b);                     }                     // 依次关闭(注意顺序)                     fin.close();                     outStream.flush();                     outStream.close();                 }             }             conn.commit();             conn.setAutoCommit(true);             close(conn, ps, rs);         } catch (SQLException e) {             try {                 conn.rollback();                 e.printStackTrace();             } catch (SQLException e1) {                 // TODO Auto-generated catch block                 e1.printStackTrace();             }             return false;         }         return true;     }
相关文章
相关标签/搜索