/** * Clob 데이타를 수행한다. * * @param sql String * @param data String * @return int * @throws SQLException */ public int executeClob(String sql, String data) throws SQLException { KJFLog.sql(sql); Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; int result = 0; try { conn = this.getConnection(); ps = conn.prepareStatement(sql); CLOB cb = null; rs = ps.executeQuery(); ; if (rs.next()) { cb = ((OracleResultSet) rs).getCLOB(1); } long pos = 0; // CLOB 데이타가 insert되는 위치의 offset값을 나타낸다. if (cb == null) { pos = 1; } else { pos = cb.length() + 1; } // CLOB.putString이 buf에 담긴 데이타를 해당 CLOB 컬럼에 update하는 // 작업을 하게 된다. cb.putString(pos, data); } catch (SQLException e) { System.out.println(e); throw e; } finally { if (rs != null) rs.close(); if (ps != null) ps.close(); this.release(conn); } return result; // Update나 Insert된 row 수 }
/** * 处理增加 * * @param actionForm ActionForm 表单From * @param request HttpServletRequest Web请求 * @param response HttpServletResponse Web结果 * @throws CDealException 处理异常 */ public static long doAdd( AddForm pWebForm, HttpServletRequest request, HttpServletResponse response) throws CDealException, SQLException { long chapterid; Connection mconn = null; PreparedStatement pstmt = null; try { CUserBean loginUser = (CUserBean) request.getSession().getAttribute(CConstants.USER_BEAN); // 用户BEAN /*TPubFlfggl aPoBean = webForm2PoForm(pWebForm); // 将页面的Form的数据拷内到实体对象 aPoBean.setId(CTools.getNewNumID()); aPoBean.setCreateperson(loginUser.getId()); // 用户 ID aPoBean.setCreatetime(CTools.getCurrentTimestamp()); // 当前时间 CHibernateUtil.saveObject(aPoBean); // 调用 PO 层进行增加 */ chapterid = CTools.getNewNumID(); mconn = CDBManager.getConn(); mconn.setAutoCommit(false); // 将自动提交设置为否 String sql = "insert into t_pub_law (id,createperson,createtime,title,classification,issuedate,orderno,spare1,spare2,spare3,spare4,businesstype,bigcontent) values(?,?,?,?,?,?,?,?,?,?,?,?,?)"; pstmt = mconn.prepareStatement(sql); pstmt.setLong(1, chapterid); pstmt.setLong(2, loginUser.getId()); pstmt.setTimestamp(3, CTools.getCurrentTimestamp()); pstmt.setString(4, pWebForm.getTPubFlfggl().getTitle()); CLog.println("4====title=" + pWebForm.getTPubFlfggl().getTitle()); pstmt.setInt(5, pWebForm.getTPubFlfggl().getClassification()); CLog.println("5====classification=" + pWebForm.getTPubFlfggl().getClassification()); pstmt.setTimestamp( 6, CTools.convertStringToTimestamp( pWebForm.getTPubFlfggl().getIssueTime_str(), "yyyy-mm-dd")); pstmt.setLong(7, pWebForm.getTPubFlfggl().getOrderno()); pstmt.setString(8, pWebForm.getTPubFlfggl().getSpare1()); pstmt.setString(9, pWebForm.getTPubFlfggl().getSpare2()); pstmt.setString(10, pWebForm.getTPubFlfggl().getSpare3()); pstmt.setString(11, pWebForm.getTPubFlfggl().getSpare4()); pstmt.setInt(12, pWebForm.getTPubFlfggl().getBusinesstype()); pstmt.setClob(13, CLOB.empty_lob()); // 构造空CLOB对象 pstmt.executeUpdate(); pstmt.close(); // =======================再次从库表中读出,获得CLOB句柄 pstmt = mconn.prepareStatement("select a.bigcontent from t_pub_law a where a.id = ? for update"); pstmt.setLong(1, chapterid); ResultSet rs = pstmt.executeQuery(); rs.next(); CLOB textClob = (CLOB) rs.getClob(1); textClob.putString( 1, pWebForm .getTPubFlfggl() .getBigContent_str() .replaceAll("\n", "<br>")); // 将页面的法律法规内容写入Clob pstmt = mconn.prepareStatement("update t_pub_law set bigcontent=? where id=?"); pstmt.setClob(1, textClob); pstmt.setLong(2, chapterid); pstmt.executeUpdate(); return chapterid; } catch (Exception e) { throw new CDealException("执行增加" + mModuleName + "时失败。", e); } finally { if (pstmt != null) { pstmt.close(); } mconn.commit(); if (mconn != null) { mconn.close(); } } }
/** * 处理修改 * * @param actionForm ActionForm 表单From * @param request HttpServletRequest Web请求 * @param response HttpServletResponse Web结果 * @throws CDealException 处理异常 */ public static void doEdit( EditForm pWebForm, HttpServletRequest request, HttpServletResponse response) throws CDealException, SQLException { CUserBean loginUser = (CUserBean) request.getSession().getAttribute(CConstants.USER_BEAN); // 用户BEAN long chapterid = pWebForm.getTPubFlfggl().getId(); Connection mconn = null; PreparedStatement pstmt = null; try { /*TPubFlfggl aPoBean = webForm2PoForm(pWebForm); // 将页面的Form的数据拷内到实体对象 aPoBean.setModperson(loginUser.getId()); // 用户 ID aPoBean.setModtime(CTools.getCurrentTimestamp()); // 当前时间 CHibernateUtil.updateObject(aPoBean); // 调用 PO 层进行修改 */ mconn = CDBManager.getConn(); mconn.setAutoCommit(false); // 将自动提交设置为否 String sql = "update t_pub_law a set a.modperson=?,a.modtime=?,a.title=?,a.classification=?,a.businesstype=?,a.issuedate=?,a.orderno=?,a.bigcontent = ? where a.id = ? "; pstmt = mconn.prepareStatement(sql); pstmt.setLong(1, loginUser.getId()); pstmt.setTimestamp(2, CTools.getCurrentTimestamp()); pstmt.setString(3, pWebForm.getTPubFlfggl().getTitle()); pstmt.setInt(4, pWebForm.getTPubFlfggl().getClassification()); pstmt.setInt(5, pWebForm.getTPubFlfggl().getBusinesstype()); pstmt.setTimestamp( 6, CTools.convertStringToTimestamp( pWebForm.getTPubFlfggl().getIssueTime_str(), "yyyy-MM-dd")); pstmt.setLong(7, pWebForm.getTPubFlfggl().getOrderno()); pstmt.setClob(8, CLOB.empty_lob()); pstmt.setLong(9, chapterid); pstmt.executeUpdate(); pstmt.close(); // =======================再次从库表中读出,获得CLOB句柄 pstmt = mconn.prepareStatement("select a.bigcontent from t_pub_law a where a.id = ? for update"); pstmt.setLong(1, chapterid); ResultSet rs = pstmt.executeQuery(); rs.next(); CLOB textClob = (CLOB) rs.getClob(1); if (textClob == null) { CLog.println("340========textClob is null"); } if (pWebForm.getTPubFlfggl().getBigContent_str() == null) { CLog.println("343========BigContent_str is null"); } textClob.putString( 1, pWebForm .getTPubFlfggl() .getBigContent_str() .replaceAll("\n", "<br>")); // 将页面的法律法规内容写入Clob pstmt = mconn.prepareStatement("update t_pub_law set bigcontent=? where id=?"); pstmt.setClob(1, textClob); pstmt.setLong(2, chapterid); pstmt.executeUpdate(); } catch (Exception e) { throw new CDealException("执行修改" + mModuleName + "时失败。", e); } finally { if (pstmt != null) { pstmt.close(); } mconn.commit(); if (mconn != null) { mconn.close(); } } }