页面树结构
转至元数据结尾
转至元数据起始

这里仅以BusinessViewService的API查询数据集数据作为示例,其它Service的API的操作方式是类似的。

数据集位置:根目录\功能演示\查询定义\原生SQL查询\带参数的原生SQL

 

JavaJsonAPITest.java
import java.util.List;
import smartbi.net.sf.json.*;
import smartbi.sdk.ClientConnector;
import smartbi.sdk.InvokeResult;
import smartbi.sdk.RemoteException;
public class JavaJsonAPITest {
 //打印字段信息
 private static void printFieldNames(JSONArray fNames) {
  List<String> names = (List<String>) JSONArray.toList(fNames);
  for (String fieldName : names)
   System.out.print(fieldName + ", ");
 }
 //打印结果集信息
 private static void printMatrix(JSONArray data) {
  List<List<String>> rows = JSONArray.toList(data);
  for (List<String> row : rows) {
   System.out.println();
   for (String cell : row) {
    System.out.print(cell + ", ");
   }
  }
 }
 public static void main(String[] args) {
  String Smartbi_URL = "http://localhost:8080/smartbi";
  ClientConnector conn = new ClientConnector(Smartbi_URL);
  try {
   //第一次调用必须建立一个连接,后续调用则不必再建连接
   boolean loginSuceeded = conn.open("admin", "manager");
   if (loginSuceeded) {
    // 业务查询ID(对应示例库中的"根目录\功能演示\查询定义\原生SQL查询\带参数的原生SQL")
    String bizViewId = "I2c94907127855da201278df551b62602";
    // 参数ID
    String paramId = "OutputParameter.I2c94907127855da201278df551b62602.产品名称参数_列表对话框";
    // 参数真实值
    String paramValue = "牛奶,花生,饼干,猪肉,汽水";
    JSONObject param = new JSONObject();
    param.put("id", paramId);
    param.put("value", paramValue);
    JSONArray params = new JSONArray();
    params.put(param);
    String paramsJsonArrStr = params.toString();
    //每页行数
    int rowsPerPage = 2;
    // 是否获取总行数
    boolean getTotalRows = true;
    InvokeResult result = conn.remoteInvoke("BusinessViewService","openLoadDataView", 
						new Object[] { bizViewId,paramsJsonArrStr, rowsPerPage, getTotalRows });
    if (result.isSucceed()) {
     JSONObject ret = (JSONObject) result.getResult();
     String loadDataClientId = ret.getString("clientId");
     int totalRows = ret.getInt("totalRowCount");
     printFieldNames(ret.getJSONArray("fieldNames"));
     int pages = totalRows / rowsPerPage + (totalRows % rowsPerPage == 0 ? 0 : 1);
     for (int pageNum = 0; pageNum < pages; pageNum++) {
      InvokeResult viewData = conn.remoteInvoke("BusinessViewService", 
						"loadViewData",  
						new Object[] { loadDataClientId, pageNum });
      JSONArray pageData = (JSONArray) viewData.getResult();
      printMatrix(pageData);
     }
     conn.remoteInvoke("BusinessViewService", "closeLoadDataView", new Object[] { loadDataClientId });
    }
   }
  } catch (RemoteException e) {
   e.printStackTrace();
  } finally {
   // 关闭应用连接器
   conn.close();
  }
 }
}

程序輸出:

行号, 产品名称, 单价, 库存,

1, 牛奶, 19.0, 17.0,

2, 饼干, 17.45, 29.0,

3, 猪肉, 39.0, 0.0,

4, 花生, 10.0, 3.0,

5, 汽水, 4.5, 20.0,