SQL 查询

发送反馈


SQL 查询就是根据 SQL 查询条件查找满足条件的记录。构建一个简单的 SQL 查询:获取中国地图的 China_Province_pl@China 图层中 SmID 为2的地物。

对于该简单的 SQL 查询,主要传递2个参数:queryMode 和 queryParameters。queryMode 说明查询模式(这里是 SqlQuery),queryParameters 是查询的参数,构建查询代码如下:

//SQL 查询

function queryBySql()

{

    var commit=getcommit();

    var uri="http://localhost:8090/iserver/services/map-china400/rest/maps/China/queryResults.json";

    //设置请求体参数

    var entry={};

    entry.queryMode="SqlQuery";

    entry.queryParameters={"networkType":null,"startRecord":0,"queryParams":[{"orderBy":null,"ids":null,"name":"China_Province_pl@China","attributeFilter":"SmID=2","groupBy":null,"linkItems":null,"joinItems":null,"fields":["SMID","Name"]}],"customParams":null,"expectCount":100000,"queryOption":"ATTRIBUTEANDGEOMETRY"}

    commit.open("POST",encodeURI(uri),false,"","");

    commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

    //alert(toJSON(entry));

    commit.send(toJSON(entry));

    

    //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。

    var response = json_parse(commit.responseText, null);       

    //获取用作显示的 Div 容器。

    var container = document.getElementById('container');

    container.innerHTML="";

    //判断查询是否成功

    if(!response.succeed)

    {

        //查询失败

        container.innerHTML+="<p>查询失败</p>";

        container.innerHTML+="<p>错误码:"+response.error.code+"</p><p>错误原因:"+response.error.errorMsg+"</p>";

    }else

    {

        //查询成功

        container.innerHTML+="<p>查询成功</p>";

        container.innerHTML+="<p>查询结果(queryResult)资源的 URI 为:"+response.newResourceLocation+"</p>";

    }   

}

其中“queryMode="SqlQuery"”说明查询为 SQL 查询,“queryParameters={…}”为查询参数。在 queryParameters 中,“"queryOption":"ATTRIBUTEANDGEOMETRY"”说明查询的结果中既要包含属性信息,也要包含空间信息(几何实体),“"queryParams":[{…}]”为查询数据集的参数集合,这里只有一组查询数据集的参数,在这组参数({…,"name":"China_Province_pl@China","attributeFilter":"SmID=2",…,"fields":["SMID","Name"]})中,name 指定的是查询的目标图层的名称,attributeFilter 是查询的限制条件(类似于 SQL 语句里 where 后面的部分),fields 指定的是查询结果应该包含的字段(这里是 SMID 和 Name)。

执行查询,得到 URI 地址类似 http://localhost:8090/iserver/services/map-china400/rest/maps/China/queryResults/niycqezr_8dcb00713c24432a9bd024ddb5678a76.json 的 queryResult 资源,该 queryResult 资源包含了符合条件的地物的 SMID、Name 字段值信息和地物的空间信息(Geometry)。

queryResult 资源的进一步解析请参见 queryResult 的解析