java存取CLOB


1.插入
public boolean saveNotice(NoticeBean noticeBean) {
		Connection conn = null;
		Statement stm = null;
		ResultSet rs = null;
		try {

			conn = jdbcTemplate.getDataSource().getConnection();
			stm = conn.createStatement();
			conn.setAutoCommit(false); // 设置不自动提交
			String sql = "insert into t_notice values(seq_t_notice.nextval,'"
					+ noticeBean.getNtitle() + "',empty_clob(),'"
					+ noticeBean.getNauthor() + "',sysdate,'',1,'',to_date('"
					+ noticeBean.getNvaldate() + "','yyyy-MM-dd'))";

			stm.executeUpdate(sql);

			// 获取当前序列
			sql = "select seq_t_notice.currval from dual";
			rs = stm.executeQuery(sql);
			long seq_t_notice = 0;
			if (rs.next()) {
				seq_t_notice = rs.getLong(1);
			}

			// 上更新锁
			sql = "select ncontent from t_notice where noticeid="
					+ seq_t_notice + " for update";
			rs = stm.executeQuery(sql);
			Clob clob = null;
			if (rs.next()) {
				// 得到大字段对象
				clob = rs.getClob(1);
			}

			// 得到输出流
			Writer write = clob.setCharacterStream(0);
			BufferedWriter bwrite = new BufferedWriter(write);
			// 写流
			bwrite.write(noticeBean.getNcontent());
			bwrite.flush();
			bwrite.close();

			// 遍历保存附件
			if (noticeBean.getIsannex().equals("1")) {
				String annexs[] = noticeBean.getAnnexs();
				String annexranname[] = noticeBean.getAnnexranname();
				for (int i = 0; i < annexs.length; i++) {
					if (annexs[i] != null && annexs[i].length() != 0 ) {
						sql = "insert into T_NOTICE_ANNEX values(SEQ_T_NOTICE_ANNEX.nextval,'"
								+ annexs[i]
								+ "','"
								+ annexranname[i]
								+ "',"
								+ seq_t_notice + ")";
						stm.executeUpdate(sql);
					}
				}
			}

			conn.commit();
			conn.setAutoCommit(true);

		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		} finally {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return true;
	}


2.读取
try {
			con = ConOracle.getCon();
			stmt = con.createStatement();
			String sql = "select e.emailid,title,content,senddate,isfile,sender,u.username,e.receiver  from t_email e"
					+ " join t_user u on e.sender=u.username where e.emailid = '"
					+ emailid + "'";
			rs = stmt.executeQuery(sql);
			while (rs.next()) {
				emailBean.setEmailid(rs.getString("emailid"));
				emailBean.setSenddate(rs.getString("senddate"));
				emailBean.setSender(rs.getString("sender"));
				String[] receiver = {rs.getString("receiver")};
				emailBean.setReceiver(receiver);
				emailBean.setTitle(rs.getString("title"));
				Clob clob = rs.getClob("content");
				Reader reader = clob.getCharacterStream();
				BufferedReader bufferedReader = new BufferedReader(reader);
				StringBuffer bufferTemp = new StringBuffer();
				String line = "";
				while ((line = bufferedReader.readLine()) != null) {
					bufferTemp.append(line);
				}
				emailBean.setContent(bufferTemp.toString());
				bufferedReader.close();
				reader.close();
			}
		} catch (Exception e1) {
			e1.printStackTrace();
		} 


你可能感兴趣的:(java,sql)