BLOB和CLOB字段的存取

對blob和clob插入sql

tblappresourcemanager 是個人一個實體類, 你能夠本身建一個實體數據庫

public String insert(Tblappresourcemanager tblappresourcemanager,HttpServletRequest request) {
		 Connection conn = SqlUtil.getJdbcConnection();
		 ResultSet rs=null;
		 PreparedStatement ps = null;  
		 String resourceid = tblappresourcemanager.getResourceid();
		try {
			StringBuffer sql = new StringBuffer();
			sql.append("insert into TBLAPPRESOURCEMANAGER(APPID,APPKEY,APPTYPE,APPPATH,REMARK,RESOURCEID,BACK2,APPCONTEXT) values(?,?,?,?,?,?,?,empty_blob())");
			ps= conn.prepareStatement(sql.toString());
		//經過oralce.sql.BLOB/CLOB.empty_lob()構造空Blob/Clob對象 
			ps.setString(1,tblappresourcemanager.getAppid());
			ps.setString(2,tblappresourcemanager.getAppkey());
			ps.setString(3,tblappresourcemanager.getApptype());
			ps.setString(4,tblappresourcemanager.getApppath());
			ps.setString(5,tblappresourcemanager.getRemark());
			ps.setString(6,resourceid);
			ps.setString(7,tblappresourcemanager.getBack2());
			ps.executeUpdate();
			ps.close();

		//再次對讀出Blob/Clob句柄 
		
			ps=(PreparedStatement) conn.prepareStatement("select APPCONTEXT from TBLAPPRESOURCEMANAGER where RESOURCEID=? for update");
			ps.setString(1,resourceid);
			rs=ps.executeQuery();
			oracle.sql.BLOB contextBlob = null;
			
			while(rs.next()){
				 contextBlob=(oracle.sql.BLOB)rs.getBlob("appcontext");
			}
			MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
			MultipartFile mFile =  multipartRequest.getFile("fileId"); 
			if(mFile==null){
				return "獲取文件失敗";
				
			}
			InputStream inStream = mFile.getInputStream();
			OutputStream outStream=contextBlob.getBinaryOutputStream();

			int count = -1;
			byte[] data = new byte[1024];  

		     
				while ((count = inStream.read(data)) != -1) {


				    outStream.write(data, 0, count);

				  }
		
				inStream.close();
				outStream.close();


			//再將Blob/Clob字段更新到數據庫 
			ps=(PreparedStatement)conn.prepareStatement("update TBLAPPRESOURCEMANAGER set APPCONTEXT=?  where RESOURCEID=?");
			ps.setBlob(1, contextBlob);
			ps.setString(2,resourceid);

			ps.executeUpdate();
			ps.close(); 
			conn.commit();
			conn.close();
			//調用讀取文件
			readfile(resourceid);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			e.getMessage();
			return "數據庫鏈接異常";
		}catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "文件流異常";
			
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "數據流異常";
		}
		

		 return null;
	}

	public String readfile(String resouceid){
		Connection conn = SqlUtil.getJdbcConnection();
		 ResultSet rs=null;
		 PreparedStatement ps = null;  
		 InputStream in=null;
		 oracle.sql.BLOB blob = null;
		 String str = "select APPCONTEXT from TBLAPPRESOURCEMANAGER where RESOURCEID=?";
		 try {
			ps = conn.prepareStatement(str);
			ps.setString(1, resouceid);
			rs= ps.executeQuery();
			while(rs.next()){
				blob = (oracle.sql.BLOB)rs.getBlob("appcontext");
			}
			in = blob.getBinaryStream();
					FileOutputStream outStream = new FileOutputStream("D:\\cesi4.xls");
	            byte[] buf = new byte[1024];
	            int bytesIn = 0;
				while ((bytesIn = in.read(buf, 0, 1024)) != -1) {
					outStream.write(buf, 0, bytesIn);
					}
	            in.close();
	            outStream.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
            try {
                rs.close();
                ps.close();
                conn.close();
            }
            catch(Exception e) {
                e.printStackTrace();
            }
        }
		 
		return null;
	}
相關文章
相關標籤/搜索