ADF裏帶參數自定義查詢

帶參數自定義查詢,可通過oracle.jbo.server.ApplicationModuleImpl的createViewObjectFromQueryStmt()和setWhereClauseParam()方法實現,不需要再調用executeQuery()。

 

import oracle.jbo.domain.Number;
import oracle.jbo.server.ViewObjectImpl;

    public static final String APPMODULEDC = "AppModuleDataControl";

    public String testParamQuery(){
        String sqlStr = "select * from locations where LOCATION_ID < :1";  //:1可以改爲0:, 8:等
        Number locId = new Number(1601);
       
        ViewObjectImpl vo = (ViewObjectImpl)getAm().findViewObject("TEMP");
        if (vo != null)
            vo.remove();
       
        vo = (ViewObjectImpl)getAm().createViewObjectFromQueryStmt("TEMP", sqlStr);
        vo.setWhereClauseParam(0, locId);  //ParamIndex must start from 0       
    //        vo.executeQuery();  不需要
    
    vo.setRangeSize(5);
        int count = vo.getRowCount();
        System.out.println("vo.getRowCount(): " + count);  //OUTPUT: 16
       
        //Test Range
        Row[] rows = vo.getAllRowsInRange();  //操作後,處於第一個Range
        System.out.println("getRangeStart: " + vo.getRangeStart());  //OUTPUT: 0
        for (int i = 0; i < rows.length; i++){
            System.out.println(i + ":" + SysUtils.getStr(rows[i].getAttribute("LOCATION_ID")));
        }
        rows = vo.getNextRangeSet();  //操作後,還是處於第一個Range
        System.out.println("getRangeStart: " + vo.getRangeStart());  //OUTPUT: 0
        for (int i = 0; i < rows.length; i++){
            System.out.println(i + ":  " + SysUtils.getStr(rows[i].getAttribute("LOCATION_ID")));
        }
        rows = vo.getNextRangeSet();  //操作後,還是處於第二個Range
        System.out.println("getRangeStart: " + vo.getRangeStart());  //OUTPUT: 5
        for (int i = 0; i < rows.length; i++){
            System.out.println(i + ":  " + SysUtils.getStr(rows[i].getAttribute("LOCATION_ID")));
        }
            
        return null;
    }
   
    protected AppModuleImpl getAm() {
        return (AppModuleImpl)this.getApplicationModule(APPMODULEDC);
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章