Json解析跟SQLite数据库的存储的心酸历程

这篇日志是要跟我到做完这个任务为止!

</br>

太不容易了!

天啊,经历过这么多天终于有了些突破,曾经一直困扰在怎么将解析出来的json数组转化成对象存储起来在今天迎刃而解,只需要将person定义为一个数组,然后使用google的gson来解析此数组即可,即
ArrayList<Person> persons = new ArrayList<>;persons = Gson.fromjson(jtr,new TypeToken<ArrayList<Person>>(){}.getType());,
(注:jtr为从服务器上下载的json字符串。)
得到数组以后通过遍历的方法将数组内的对象存储到类里面去:
ContentValues cv = new ContentValues();ContentValues cv2 = new ContentValues(); Person person = new Person(); model mod = new model(); for (int i = 0;i<persons.size();i++) { person =(Person) persons.get(i); System.out.println(person); cv.clear(); cv.put(DB_ID, person.getMyid()); cv.put(DB_NAME, person.getName()); cv.put(DB_TYPE,person.getType()); cv.put(DB_IMAGEBIG,person.getImagebig()); cv.put(DB_IMAGESMALL,person.getImagesmall()); cv.put(DB_INTRODUCE,person.getIntroduce()); cv.put(DB_DISPLAYNAME,person.getDisplayname()); db.insert("Person", null, cv); cv2.put(DB_ID, person.getMyid()); cv2.put(DB_VERSION,person.getModel().getVersion()); cv2.put(DB_PATH, person.getModel().getPath()); db.insert("model",null,cv2); }
用以上的方法,将数组内的数据存储到Person类里面,再通过contentValue和db.insert分别存储到model和person两张表内。成功实现了add方法。

</br>

开始写第二个方法了

接下来要写的是删,可是由于外键还不知道怎么搞,实现了删除的方法,但是不能联动两张表一起删除。明天改进,删除的方法代码如下:
public void delete(Person person) { db.delete("person", "myid = ?", new String[]{String.valueOf(person.getMyid())});
通过识别person表里面的id列来删除。

第三个方法:查

今天听着歌,百着度写着代码,一不小心就完成了查的方法。真的是不简单啊。要感谢FADE这首歌啊,还有各种抖腿歌单,都亏他们才写出来T T。
  查一直觉得很复杂,后来才发现其实就那样子。定义一个游标Cursor,相当于一个指针的东西。
Cursor c = db.rawQuery("SELECT * FROM Person WHERE myid=?", new String[]{String.valueOf(myid)});
用的是rawQuery方法,这是SQLite里面自带的的,推荐使用rawquery方法,不推荐使用query方法。
然后里面写的是关于查询的SQL语句。条件可以在主函数里面写出需要的条件,比如这里可以int myid = 1;
person1.name= c.getInt(c.getColumnIndex("name"));
 然后根据myid = 1的条件查出 在Person表中myid=1的名字。以上就是查询的方法。明天要写的是改,通过人物名字来修改人物的属性。

    原文作者:裸奔的小鸡
    原文地址: https://www.jianshu.com/p/cafd427d1a76
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞