需求:使用oracle的session级的临时表,每个人登录系统后,使用自己的临时表,数据不互相干扰
实现:自己写代码建立jdbc连接,将这个连接存入session,下次使用时,从session中获取这个连接,这样使用同一个连接访问临时表,最后在注销的时候,关闭这个连接。
1 建立jdbc连接、访问session代码
<pre>public static void tempTable(){ java.sql.Connection conn = null; java.sql.PreparedStatement pstmt = null; try { HttpSession session = ContextHelper.getSessionContext().getSession();//获得session conn = (java.sql.Connection) session.getAttribute("conn");//从session中取值 if(conn == null){ java.lang.System.out.println("-----------new"); Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:thin:@oracle-10.justep.com:1521:orcl", "x5sys", "1"); //建立连接 session.setAttribute("conn", conn);//给session赋值 }else{ java.lang.System.out.println("-----------old"); } pstmt = conn.prepareStatement("insert into temp_tbl (cola) select '" +ContextHelper.getOperator().getName()+"' from dual"); pstmt.execute();//操作临时表 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select cola from temp_tbl"); ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); while (rs.next()){ //在控制台输出临时表中的数据 for (int i=1; i<=columnCount; i++){ java.lang.System.out.print(rs.getString(i) + " | "); } java.lang.System.out.println(); } } catch (ClassNotFoundException e) { throw new RuntimeException(e); } catch (SQLException e) { throw new RuntimeException(e); } finally { try { if (pstmt != null) { pstmt.close(); } } catch (SQLException e) { java.lang.System.out.println("##close.SQLException"); } } }
2 注销时关闭连接的代码
打开/BIZ/SA/OPM/system/system.process.m,动作设置,选择logoutAction,写执行前事件
public static void systemProcessBeforeLogoutAction() { try{ HttpSession session = ContextHelper.getSessionContext().getSession();//获得session java.sql.Connection conn; conn = (java.sql.Connection) session.getAttribute("conn");//从session中取值 if(conn != null){ conn.close();//关闭连接 java.lang.System.out.println("--------cloase--------"); } }catch(Exception e){ throw new RuntimeException(e); } }
说明:不能使用x5提供的方法,因为x5在获取连接时,会从连接池中选择一个可用的连接,这个连接很可能是其他人释放的连接,临时表中就可能存在数据,因此不能使用这样的连接。
下载:数据库 |
本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5!
阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443
评一波