天天看點

JDBC連接配接ORACLE庫中ALL_TAB_COMMENTS視圖并用ROWNUM分頁

public void retrieve() {
	PageInfo page = dataWrap.getPageInfo();
	ArrayList<T_T_LFHC_TASKUTIL> arrayList = new ArrayList<T_T_LFHC_TASKUTIL>();
	String param3 = dataWrap.getQuery().get("param3") == null ? ""
			: dataWrap.getQuery().get("param3").trim().toUpperCase();
	String driver = "";
	String url = "";
	String username = "";
	String password = "";
	String sql1 = "SELECT COUNT(1) COUNT FROM ALL_TAB_COMMENTS  WHERE TABLE_TYPE = 'TABLE'";
	String sql = "SELECT ROWNUM RN, OWNER  PARAM2, TABLE_NAME  PARAM3,COMMENTS  PARAM4 FROM ALL_TAB_COMMENTS  WHERE TABLE_TYPE = 'TABLE'  ";
	int count = 0;
	int begin;
	int end ;
	
	if(param3 != null && StringUtils.isNotEmpty(param3)){
		sql1 += " AND TABLE_NAME LIKE '%" + param3 + "%' ";
		sql += " AND TABLE_NAME LIKE '%"+ param3+ "%' ";
	}
	sql = "select * from (" + sql +") where 1 = 1 ";
	try {
		JSONObject resourceObj = new JSONObject(resourceStr);
		responseData.setMessage(resourceStr);
		url = (String) resourceObj.get("link");
		username = (String) resourceObj.get("user");
		password = (String) resourceObj.get("pwd");

	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	driver = "oracle.jdbc.driver.OracleDriver";
	boolean retCode = false;
	Connection con = null;

	try {
		Class.forName(driver);
		con = DriverManager.getConnection(url, username, password);
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		if (con != null) {
			retCode = true;
			System.out.println("sql1-->" + sql1);
			ps = con.prepareStatement(sql1);
			rs = ps.executeQuery();
			if(rs.next()) {
				count = Integer.parseInt(rs.getString("COUNT"));
			}

		}
		
		// 分頁
		page.setAllRowNum(count);
		if (count / page.getRowOfPage() == 0) {
			page.setAllPageNum(count / page.getRowOfPage());
		} else {
			page.setAllPageNum(count / page.getRowOfPage() + 1);
		}

		 begin = (page.getCurPageNum() - 1) * page.getRowOfPage();
		 end = count > (page.getCurPageNum() * page.getRowOfPage()) ? (page
				.getCurPageNum() * page.getRowOfPage()) : count;
		 sql += " AND RN > "+begin;
		 sql += " AND RN <= "+end;
		 System.out.println("sql--->" + sql);
		 
		if (con != null) {
			retCode = true;
			ps = con.prepareStatement(sql);
			rs = ps.executeQuery();
			while(rs.next()) {
				T_T_LFHC_TASKUTIL t_T_LFHC_TASKUTIL = new T_T_LFHC_TASKUTIL ();
				t_T_LFHC_TASKUTIL.setParam2(rs.getString("PARAM2"));
				t_T_LFHC_TASKUTIL.setParam3(rs.getString("PARAM3"));
				t_T_LFHC_TASKUTIL.setParam4(rs.getString("PARAM4"));
				arrayList.add(t_T_LFHC_TASKUTIL);
			}

		}
		rs.close();
		ps.close();
		con.close();
	} catch (Exception e) {
		// e.printStackTrace();
		if(retCode)
			responseData.setMessage("resFaile");
		else
			responseData.setMessage("connFaile");
	} 
	

	if (arrayList.size() == 0)
		responseData.setErrorMessage("沒有查詢到表資料!");

	dataWrap.setDataList(arrayList);

	responseData.setAjaxDataWrap("dataWrap", dataWrap);
}