Android Webservices 返回多行多列数据(Dataset)

来源:互联网 发布:2010年韩国进出口数据 编辑:程序博客网 时间:2024/06/10 16:16

转自:http://blog.csdn.net/panfb227/article/details/6298542

对于之前从事.net或者java开发人员,习惯了从后台获取网格数据(多行多列DataTable),但转行从事android开发,难免会不习惯

Android调用Webservice时,如果返回值是一个boolean或者string值时可以通过下面方式接收返回值:

[java] view plaincopy
  1. SoapObject soapObject = (SoapObject) envelope.getResponse();  
  2. Re = soapObject.getProperty("twgp")  

如果接收是一行值时也可以通过上面的方式去获取,但是如果返回的是多行多列或者一行多列的数据集时就比较麻烦了,上面的方法不管用,不然的话接收到的值永远是第一行的值,所以对于那种多行多列的返回值时,如下面的webservice:

 

[java] view plaincopy
  1. //运价查询  
  2. @SuppressWarnings("unchecked")  
  3. @Repository("priceDao")  
  4. public class PriceDao extends BaseOraDao {  
  5.   
  6.     public List getPrice(String fromPort, String toPort){  
  7.         List foo;  
  8.         StringBuffer sb = new StringBuffer();  
  9.         sb.append("select max(price20gp) as price20GP,max(price40gp) as price40gp,max(price40h) ");  
  10.         sb.append("as price40h from ");  
  11.         sb.append("(select * from nqprice_main n where n.feetype='水运费' and n.fromport='");  
  12.         sb.append(fromPort).append("' ");  
  13.         sb.append("and n.toport='").append(toPort).append("' ");  
  14.         sb.append("and n.endday is null order by n.beginday desc) where rownum<=2");  
  15.           
  16.         foo = getNqoraJdbcTemplate().query(sb.toString(), new RowMapper() {  
  17.             public Object mapRow(ResultSet rs, int rowNum) throws SQLException {  
  18.                   Price dm = new Price();  
  19.                   dm.setTwgp(String.valueOf(rs.getDouble("price20GP")));  
  20.                   dm.setFtgp(String.valueOf(rs.getDouble("price40gp")));  
  21.                   dm.setFtgp(String.valueOf(rs.getDouble("price40h")));  
  22.                   return dm;  
  23.             }             
  24.         });  
  25.           
  26.         return foo;  
  27.     }  
  28. }   }  
  29. }  

 

经过一天研究发现有一种办法获取:

[java] view plaincopy
  1. //构造数据  
  2. ArrayList<String> list = null;  
  3. //web service请求  
  4. ht.call(null, envelope);  
  5. //得到返回结果  
  6. result = (SoapObject) envelope.bodyIn;  
  7. for (int i = 0; i < result.getPropertyCount(); i++) {  
  8.     SoapObject soapChilds =(SoapObject)result.getProperty(i);  
  9.   
  10.     list.add(soapChilds.getProperty("price20GP").toString());  
  11. }  
  12. //这样list就包含了返回列price20GP的数据  

 

结合下面文章怎样去调用webservices



0 0
原创粉丝点击