/** * protected Hashtable[] doJDBC(String dbname_, String sql_, // Connection con, boolean goNative_, * long offset_, int maxsize_, boolean robotquery_, Connection con) throws SQLException */ public void init() throws Exception { try { if (!outcon) { tx = TransactionManager.getTransaction(); if (tx == null) { con = SQLUtil.getSQLManager().requestConnection(dbname); // 事务无处理,批处理的默认事务处理需要设定 if (needTransaction) { this.oldautocommit = con.getAutoCommit(); con.setAutoCommit(false); } } else { try { con = tx.getConnection(dbname); } catch (TransactionException e) { try { tx.setRollbackOnly(); } catch (Exception ei) { } throw e; } } } else { if (this.con != null && this.con instanceof TXConnection) { tx = TransactionManager.getTransaction(); } } } catch (Exception e) { throw e; } }
/** * 经过测试证明存储过程中如果没有对插入/删除/修改操作做事务提交、回滚时,可以通过poolman * 的事务框架来管理事务;如果存储过程中对插入/删除/修改操作已经做了事务提交或者回滚时,那么应用的事务和存储过程中 中的事务就是分离的两个事务。 * * @param i 为0时回滚事务,1时提交事务 */ public @Test void testTest_fWithNameIndexForObjectTx() { int i = 1; TransactionManager tm = new TransactionManager(); try { tm.begin(); CallableDBUtil callableDBUtil = new CallableDBUtil(); callableDBUtil.prepareCallable("{? = call Test_f(?,?,?)}"); callableDBUtil.registerOutParameter(1, java.sql.Types.INTEGER); // 不允许的操作: Ordinal binding and Named binding cannot be combined! callableDBUtil.setInt(2, 10); callableDBUtil.registerOutParameter(3, java.sql.Types.VARCHAR); callableDBUtil.registerOutParameter(4, java.sql.Types.VARCHAR); Test_f tets = (Test_f) callableDBUtil.executeCallableForObject(Test_f.class); // System.out.println("name1:" + callableDBUtil.getString("name")); // System.out.println("name2:" + callableDBUtil.getString("name1")); System.out.println("Test_f is " + tets); callableDBUtil.executeInsert("insert into test(id,name) values('11','name11')"); if (i == 0) tm.rollback(); else tm.commit(); } catch (Exception e) { e.printStackTrace(); } finally { tm.release(); } }
/** * 获取频道评论 前n条数据 * * @param n * @return * @throws SQLException */ public NComentList getChannelCommnetList(String channel, int n) throws Exception { Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("channel", channel); paramMap.put("n", n + 1); TransactionManager tm = new TransactionManager(); try { tm.begin(tm.RW_TRANSACTION); NComentList nComentList = new NComentList(); nComentList.setComments( executor.queryListBean(DocComment.class, "getChannelCommnetNList", paramMap)); // Container container = new ContainerImpl(); // container.in /* if (!CollectionUtils.isEmpty(nComentList.getComments())) { for (DocComment docComment : nComentList.getComments()) { String documentUrl= container.getPublishedDocumentUrl(new Integer(docComment.getDocId()).toString()); docComment.setDocUrl(documentUrl); } }*/ nComentList.setTotal(getChannelCommentPublishedCount(channel)); return nComentList; } catch (SQLException e) { throw e; } catch (Exception e) { throw e; } finally { tm.releasenolog(); } }
public String showAllComments( String siteId, int docId, long channelId, HttpServletRequest request, HttpServletResponse response) throws Exception { Container container = new ContainerImpl(); container.initWithSiteid(siteId, request, request.getSession(false), response); TransactionManager tm = new TransactionManager(); try { tm.begin(tm.RW_TRANSACTION); // 获得该文档所在的频道评论开关 int channelCommentSwitch = docCommentManager.getDocCommentSwitch(String.valueOf(docId), "chnl"); if (channelCommentSwitch != 0) { // 首先判断频道的评论开关 request.setAttribute("commentSwitch", channelCommentSwitch); } else { int documentCommentSwitch = docCommentManager.getDocCommentSwitch(String.valueOf(docId), "doc"); request.setAttribute("commentSwitch", documentCommentSwitch); } // 获得该文档所在频道的评论审核开关 Integer aduitSwitchFlag = docCommentManager.getChannelCommentAduitSwitch((int) channelId); if (aduitSwitchFlag != null) { request.setAttribute("aduitSwitchFlag", aduitSwitchFlag); } else { request.setAttribute("aduitSwitchFlag", 1); } Document doc = CMSUtil.getCMSDriverConfiguration() .getCMSService() .getDocumentManager() .getPartDocInfoById(docId + ""); String docurl = container.getPublishedDocumentUrl(doc); request.setAttribute("docId", docId); request.setAttribute("channelId", channelId); request.setAttribute("docurl", docurl); request.setAttribute("docTitle", doc.getTitle()); request.setAttribute("doc", doc); return "path:showAllComments"; } finally { tm.releasenolog(); } }
/** 针对oracle Clob字段的插入操作 */ @Test public void testBigClobWrite() { PreparedDBUtil dbUtil = new PreparedDBUtil(); TransactionManager tm = new TransactionManager(); try { // 启动事务 tm.begin(); // 先插入一条记录,blob字段初始化为empty_lob dbUtil.preparedInsert("insert into test(id,clobname) values(?,?)"); String id = DBUtil.getNextStringPrimaryKey("test"); dbUtil.setString(1, id); dbUtil.setClob(2, CLOB.empty_lob()); // 先设置空的blob字段 dbUtil.executePrepared(); // 查找刚才的插入的记录,修改blob字段的值为一个文件 dbUtil = new PreparedDBUtil(); dbUtil.preparedSelect("select clobname from test where id = ?"); dbUtil.setString(1, id); dbUtil.executePrepared(); CLOB clob = (CLOB) dbUtil.getClob(0, "clobname"); if (clob != null) { DBUtil.updateCLOB(clob, new java.io.File("d:\\route.txt")); } tm.commit(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); try { tm.rollback(); } catch (RollbackException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } finally { tm = null; dbUtil = null; } }
/** * 获取站点评论 前n条数据 * * @param n * @return * @throws SQLException */ public NComentList getSiteCommnetList(int n) throws Exception { Map<String, Object> paramMap = new HashMap<String, Object>(); // paramMap.put("docId", docId); paramMap.put("n", n + 1); TransactionManager tm = new TransactionManager(); try { tm.begin(tm.RW_TRANSACTION); NComentList nComentList = new NComentList(); nComentList.setComments( executor.queryListBean(DocComment.class, "getSiteCommnetNList", paramMap)); nComentList.setTotal(getSiteCommentPublishedCount()); return nComentList; } catch (SQLException e) { throw e; } catch (Exception e) { throw e; } finally { tm.releasenolog(); } }
/** * 展示文档评论 * * @param docId 文档ID * @param request HttpServletRequest * @param response HttpServletResponse * @return String * @throws Exception */ public String showDocumentCommentList( int docId, long channelId, HttpServletRequest request, HttpServletResponse response) throws Exception { TransactionManager tm = new TransactionManager(); try { tm.begin(tm.RW_TRANSACTION); // 获得该文档所在的频道评论开关 int channelCommentSwitch = docCommentManager.getDocCommentSwitch(String.valueOf(docId), "chnl"); if (channelCommentSwitch != 0) { // 首先判断频道的评论开关 request.setAttribute("commentSwitch", channelCommentSwitch); } else { int documentCommentSwitch = docCommentManager.getDocCommentSwitch(String.valueOf(docId), "doc"); request.setAttribute("commentSwitch", documentCommentSwitch); } // 获得该文档所在频道的评论审核开关 Integer aduitSwitchFlag = docCommentManager.getChannelCommentAduitSwitch((int) channelId); if (aduitSwitchFlag != null) { request.setAttribute("aduitSwitchFlag", aduitSwitchFlag); } else { request.setAttribute("aduitSwitchFlag", 1); } request.setAttribute("docId", docId); request.setAttribute("total", docCommentManager.getTotalCommnet(docId)); request.setAttribute("channelId", channelId); return "path:showDocumentCommentList"; } finally { tm.releasenolog(); } }
public NComentList getCommnetList(int docId, int n) throws Exception { // TODO Auto-generated method stub // throw new DocCommentManagerException("未实现!"); Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("docId", docId); paramMap.put("n", n + 1); TransactionManager tm = new TransactionManager(); try { tm.begin(tm.RW_TRANSACTION); NComentList nComentList = new NComentList(); nComentList.setComments( executor.queryListBean(DocComment.class, "getCommnetNList", paramMap)); nComentList.setTotal(getTotalCommnet(docId)); return nComentList; } catch (SQLException e) { throw e; } catch (Exception e) { throw e; } finally { tm.releasenolog(); } }
/** * 同步当前缓冲中存放的对应表的最大值与数据库表中最大值 * * @throws SQLException */ protected void synchroDB(Connection con) throws SQLException { // Connection con = null; Statement stmt = null; ResultSet rs = null; JDBCTransaction tx = null; boolean outcon = true; try { if (con == null) { tx = TransactionManager.getTransaction(); if (tx == null) { con = SQLManager.getInstance().requestConnection(dbname); } else { con = tx.getConnection(dbname); } outcon = false; } stmt = con.createStatement(); rs = stmt.executeQuery(maxSql); long temp = 0; if (rs.next()) { temp = rs.getLong(1); } if (temp >= this.curValue) { curValue = temp + 1; } // else if(temp < this.curValue ) // { // // curValue = temp + 1; // // System.out.println("curValue=========:" + curValue); // } } catch (SQLException e) { // log.error("同步当前缓冲中表[" + tableName + "]的主键[" + primaryKeyName // + "]最大值与数据库该表主键最大值失败,系统采用自动产生的主键:" + e.getMessage()); throw new NestedSQLException( "同步当前缓冲中表[" + tableName + "]的主键[" + primaryKeyName + "]最大值与数据库该表主键最大值失败,系统采用自动产生的主键:", e); } catch (TransactionException e) { // e.printStackTrace(); // log.error("同步当前缓冲中表[" + tableName + "]的主键[" + primaryKeyName // + "]最大值与数据库该表主键最大值失败,系统采用自动产生的主键:" + e.getMessage()); throw new NestedSQLException( "同步当前缓冲中表[" + tableName + "]的主键[" + primaryKeyName + "]最大值与数据库该表主键最大值失败,系统采用自动产生的主键:", e); // throw new SQLException(e.getMessage()); } finally { if (con != null) { JDBCPool.closeResources(stmt, rs); if (!outcon) { if (tx == null) { JDBCPool.closeConnection(con); } } } con = null; } }