javaEE jdbc获取数据3(页面获取数据——存储过程)
来源:互联网 发布:交友软件 编辑:程序博客网 时间:2024/04/27 18:05
3 jdbc获取数据3(页面获取数据——存储过程)
package aTest;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import org.hibernate.HibernateException;import com.ImpStr;/** * 通用sql使用 */public class ImpSqlPage {private static String clssName = "oracle.jdbc.driver.OracleDriver";private static String url = "jdbc:oracle:thin:@*********:1521:orcl";private static String user = "*****";private static String password = "12345678";private static ArrayList<DataStr> getDataStr(ResultSet rs,int numberOfColumns) {ArrayList<DataStr> reslutList = new ArrayList<DataStr>();try {int rownum = 1;while (rs.next()) {DataStr datas = new DataStr();ArrayList strsList = new ArrayList();for (int i = 1; i <= numberOfColumns; i++) {Object colVObject = rs.getObject(i);String colValue = ImpStr.getStrFromObject(colVObject);strsList.add(colValue);}datas.setRownum(rownum);datas.setStrsList(strsList);reslutList.add(datas);rownum++;}} catch (Exception e) {e.printStackTrace();}return reslutList;}/** * inPage.getInSqlSel() != '*' * @param inPage */public static void setPage(ImpPage inPage) {Connection Conn = null;Statement Stmt = null;ResultSet rs = null;int totalCount = 0;String sql = inPage.getInSqlSel() + inPage.getInSqlFromWherel()+inPage.getInSqlOrder();try {Class.forName(clssName);Conn = DriverManager.getConnection(url, user, password);CallableStatement proc = null;proc = Conn.prepareCall("{ call PACK_TEST.TESTB5(?,?,?,?,?,?,?) }");proc.setString(3, inPage.getInSqlSel());proc.setString(4, inPage.getInSqlFromWherel());proc.setString(5, inPage.getInSqlOrder());proc.setInt(6, inPage.getInSqlPageNo());proc.setInt(7, inPage.getInSqlPageSize());proc.registerOutParameter(1, oracle.jdbc.OracleTypes.VARCHAR);proc.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);proc.execute();// 1String totalCountStr = proc.getString(1);totalCount = Integer.parseInt(totalCountStr);inPage.setTotalCount(totalCount);// 2if (totalCount > 0) {rs = (ResultSet) proc.getObject(2);ResultSetMetaData RsMeta = rs.getMetaData();int numberOfColumns = RsMeta.getColumnCount();// 字段个数ArrayList<DataStr> dataList = getDataStr(rs, numberOfColumns);inPage.setContents(dataList);}} catch (HibernateException e) {System.out.println("HibernateException====" + sql);e.printStackTrace();} catch (SQLException e) {System.out.println("SQLException====" + sql);e.printStackTrace();} catch (ClassNotFoundException e) {System.out.println("ClassNotFoundException====" + sql);e.printStackTrace();} finally{ if (Stmt != null) { try {Stmt.close();} catch (Exception e) {};} if (Conn != null) { try {Conn.close();} catch (Exception e) {};}}Integer pageSize = inPage.getInSqlPageSize();Integer pageNo = inPage.getInSqlPageNo();Integer pageCount = totalCount / pageSize;if (totalCount % pageSize > 0 && pageNo > pageCount+1) {pageNo = pageCount + 1;}}public static void main(String[] args) {ResultSet rs = null;CallableStatement proc;int totalCount = 0;ImpPage inPage = new ImpPage();String sqlOrderBy = "order by t.userid DESC";String inSqlSel = "select * ";String inSqlFromWherel = " from t_sys_user t";inPage.setInSqlSel(inSqlSel);inPage.setInSqlFromWherel(inSqlFromWherel);inPage.setInSqlOrder(sqlOrderBy);inPage.setInSqlPageNo(3);inPage.setInSqlPageSize(10);setPage(inPage);ArrayList<DataStr> reslutLis = inPage.getContents(); for (int i = 0; i < reslutLis.size(); i++){ DataStr data = reslutLis.get(i); ArrayList strs = data.getStrsList(); System.out.println("data.getRownum()=="+data.getRownum() + " strs[i]=="+strs.get(0).toString()); }}}
3.2 ImpPage.java
package aTest;import java.util.ArrayList;public class ImpPage {private String outRownum;private String outPageNo;private String inSqlSel;private String inSqlFromWherel;private String inSqlOrder;private int inSqlPageNo;private int inSqlPageSize;private int totalCount;private ArrayList contents;public String getOutRownum() {return outRownum;}public void setOutRownum(String outRownum) {this.outRownum = outRownum;}public String getOutPageNo() {return outPageNo;}public void setOutPageNo(String outPageNo) {this.outPageNo = outPageNo;}public String getInSqlSel() {return inSqlSel;}public void setInSqlSel(String inSqlSel) {this.inSqlSel = inSqlSel;}public String getInSqlFromWherel() {return inSqlFromWherel;}public void setInSqlFromWherel(String inSqlFromWherel) {this.inSqlFromWherel = inSqlFromWherel;}public String getInSqlOrder() {return inSqlOrder;}public void setInSqlOrder(String inSqlOrder) {this.inSqlOrder = inSqlOrder;}public int getInSqlPageNo() {return inSqlPageNo;}public void setInSqlPageNo(int inSqlPageNo) {this.inSqlPageNo = inSqlPageNo;}public int getInSqlPageSize() {return inSqlPageSize;}public void setInSqlPageSize(int inSqlPageSize) {this.inSqlPageSize = inSqlPageSize;}public int getTotalCount() {return totalCount;}public void setTotalCount(int totalCount) {this.totalCount = totalCount;}public ArrayList getContents() {return contents;}public void setContents(ArrayList contents) {this.contents = contents;}}
3.3存储过程
--5 PROCEDURE TESTB5( O_ROWNUM OUT NUMBER, O_CUR OUT REFCURSORTYPE , I_SQL_SEL IN VARCHAR2, I_SQL_FROM_WHERE IN VARCHAR2, I_SQL_ORDER IN VARCHAR2 , I_PAGE_NO IN NUMBER, I_PAGE_SIZE IN NUMBER) AS m_sql_count varchar2(2000); m_sql_context varchar2(2000); m_sql_order varchar2(2000); m_count number; BEGIN --1 m_sql_count := 'select count(*) '||I_SQL_FROM_WHERE; EXECUTE IMMEDIATE m_sql_count INTO O_ROWNUM; --2 if I_SQL_ORDER is null or I_SQL_ORDER = '' then m_sql_order := 'ORDER BY null'; else m_sql_order := I_SQL_ORDER; end if; --3 m_sql_context := 'select * from (select * from ( '||I_SQL_SEL||' , row_number() OVER(ORDER BY null) AS row_number'||I_SQL_FROM_WHERE ||') p where p.row_number > ('||I_PAGE_NO||'-1)*10) q where rownum <= '||I_PAGE_SIZE; DBMS_OUTPUT.PUT_LINE(m_sql_context); --4 OPEN mycur(v_WHERE); OPEN O_CUR FOR m_sql_context; END TESTB5;
0 0
- javaEE jdbc获取数据3(页面获取数据——存储过程)
- javaEE jdbc获取数据2(存储过程调用和结果集获取)
- javaEE jdbc获取数据1(封装到对象中)
- 获取数据字典 存储过程
- 存储过程获取数据字典信息
- 存储过程样例--获取数据
- hibernate调用存储过程获取数据要点
- 获取相同记录数据集(存储过程)
- 使用存储过程获取数据并对数据进行解析
- 页面异步获取数据
- 获取页面数据
- 获取页面图表数据
- httpclient获取页面数据
- Action获取页面数据
- 获取子页面数据
- JavaEE之Struts2获取表单数据
- 获取jdbc ResultSet的数据
- jdbc获取数据表表结构
- opencv源码解析之hog源码分析
- CSDN编程挑战——《交替字符串》
- Win7 环境 Apache2.2.x与Subversion 1.8.8 结合搭建版本控制环境
- opencv中的 HOGDescriptor 类
- Javascript和PHP中网址编码函数的对比
- javaEE jdbc获取数据3(页面获取数据——存储过程)
- 安装jekyll出错 Failed to build gem native extension.
- vsftp配置主动模式和被动模式
- 【Unity3D 游戏开发之二】高级组件(GUI:LABEL、SCROLLVIEW、TEXTFIELD…等)入门篇
- How Many Tables 1213
- C++ int()
- 如果因为忘了root口令导致无法登录系统,请试用下面的方法来改忘记的root口令:
- Ordered Broadcast有序广播
- 天龙