问题描述
- android中sqlite内联查询
-
private List<Map<String, Object>> getData(){ List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map; String[] columns=new String[]{"a.name","b.name"}; Cursor cursor = my_app.get_dbhandle().query("village a inner join town b",columns,"a.fatherRegionId=b.id",null,null,null,null); while(cursor.moveToNext()&&cursor != null){ map = new HashMap<String, Object>(); for(String skey:columns){ if(skey.equals("village.name")){//skey要和数据库的字段一致 int code = cursor.getColumnIndex(skey); String village_name = cursor.getString(code); map.put("title", village_name); continue; } if(skey.equals("town.name")){ int code = cursor.getColumnIndex(skey); String town_name = cursor.getString(code); map.put("info", town_name); continue; } } list.add(map); } return list; }
问题1:query()返回的cursor为空,内联查询应该怎么写才对?
问题2:if(skey.equals("village.name"))这样写肯定不行,如何将查询结果插入两列的listview?
解决方案
问题1: 我没太看明白你写那样的意义,但是我可以给你点建议,你要执行的sql语句输出来,然后拿去sqlite中跑一下,通过了你再写在代码里,这样保证不会错
问题2: 数据的查询这个东西你sql语句对了就可以,然后查询结果插入两列,我不知道你的意思是不是两个listview?如果是,那么你两个Adapter都加载同样的数据就行了。
时间: 2024-10-26 07:16:50