如果查询出来的数据需要转换成json和xml,那怎么办呢?
可以这样,先把数据和对应数据名放到Map中,比如HashMap:第一个放字段名,第二个放数据,不是String的,先转换成String:
HashMapmap=new HashMap ();
具体步骤如下:
实现查询:如果要实现插入,那么先把数据全部放到HashMap中,然后取出放到ContentValues对象中:
查询如下:返回一个HashMap对象:
public HashMapquerymap(/* query condition, eg : id */int id) { HashMap map = new HashMap (); SQLiteDatabase sqldb = this.getReadableDatabase(); DataUser usr = new DataUser(); String columns[] = { SQLManager.TABLE_USER_FIELD, SQLManager.TABLE_PASSWORD_FIELD, SQLManager.TABLE_NICKNAME_FIELD }; String orderby = SQLManager.TABLE_ID_FIELD; String selections = "id=?"; String conditions[] = new String[] { "" + id }; Cursor cr = sqldb.query(SQLManager.SQ_LITE_DATABASE_TABLE, columns, selections, conditions, null, null, null); cr.moveToFirst(); // only a data list return map.put("id", String.valueOf(cr.getInt(0))); map.put("usr", cr.getString(1)); map.put("nickname", cr.getString(2)); map.put("pwd", cr.getString(3)); return map; }
如果在上面的基础上需要返回很多条数据记录怎么办?
可以这样,先将每一条数据先存入一个Map中,然后将Map对象添加到List中,这样就相当于有一个List的Map数据数组了,嵌套使用.
具体实现如下:
public List> querymap( /* query condition, eg : pwd */String password) { List > maplist = new ArrayList >(); HashMap map = new HashMap (); SQLiteDatabase sqldb = this.getReadableDatabase(); DataUser usr = new DataUser(); String columns[] = { SQLManager.TABLE_USER_FIELD, SQLManager.TABLE_PASSWORD_FIELD, SQLManager.TABLE_NICKNAME_FIELD }; String orderby = SQLManager.TABLE_ID_FIELD; String selections = "u_pwd=?"; String conditions[] = new String[] { "" + password }; Cursor cr = sqldb.query(SQLManager.SQ_LITE_DATABASE_TABLE, columns, selections, conditions, null, null, null); cr.moveToFirst(); // only a data list return while (!cr.isAfterLast()) { map.put("id", String.valueOf(cr.getInt(0))); map.put("usr", cr.getString(1)); map.put("nickname", cr.getString(2)); map.put("pwd", cr.getString(3)); maplist.add(map); } return maplist; }
转换成json或者xml可以参考其他的.