考虑到咱们的接口文档可能不是很清晰,昨天对接的时候也发现UI人员对咱们的接口逻辑不太理解,因此这里写几个典型范例。虽然对接也快对接完了(逃,可是这样至少省得之后忘记了。java
(注:这里的代码都测试过,放在HeartTrace\app\src\androidTest\java\com\example\dell\db\examples\
中。持续性更新。)android
任何新建的对象,在insert以前,是不会到数据库里的!!!!!!无论怎样都不会!!!!!!!!!数据库
任何已有的对象,在修改以后,若是不update,修改也不会被更新到数据库里!!!!!!!!!无论怎样都不会!!!!!!!!!!app
只有经过getAll, getByRestrict, getAllLabel等方法获取的Diary Sentence Label Diarybook Sentencebook对象才指向数据库中的一个表项,直接new的会被认为是一个新的表项!!!测试
注:this
Diary要求:text(日记内容)能够为空,date(日期)不能为空,diary book(日记本)能够为空(TODO:这个之后确定会改为不能为空的!)spa
Sentence要求:text(日记内容)能够为空,date(日期)不能为空,sentence book(瓶子)不能为空code
Diarybook要求:name(名字)不能为空,且彼此不能重复对象
Sentencebook要求:name(名字)不能为空,且彼此不能重复接口
// 获取 DatabaseHelper helper = new DatabaseHelper(context); // 这个context视状况而定,多是this或者getApplicationContext() // 释放 helper.close();
// 获取 DatabaseHelper helper = OpenHelperManager.getHelper(context, DatabaseHelper.class); // context同上 // 释放 OpenHelperManager.releaseHelper();
Example 0. 将一个新的日记插入已有日记本,并插入标签
Example 1. 经过名字判断某个瓶子是否存在;若是不存在,则新建这个瓶子。并将新建的小纸条插入这个瓶子
Example 2. 经过单个Label查找全部的Diary
一些常见的错误操做
前提:diarybook是一个已经插入数据库的日记本,helper是已有的DatabaseHelper
Diary diary = new Diary("hiasjfhlaf"); diary.setDate(); diary.setDiarybook(diarybook); diary.insert(helper); Label label1 = new Label("label1"); label1.insert(helper); Label label2 = new Label("label2"); label2.insert(helper); diary.insertLabel(helper, label1); diary.insertLabel(helper, label2); List<Label> list = diary.getAllLabel(helper); for(Label l : list) { Log.d(getClass().getName(), "testExample0: label " + l.getLabelname()); }
若是想要对已有的diary进行insertLabel操做,其实彻底同理。
前提:helper是已有的DatabaseHelper,bookName是已有的String。
Sentencebook b = Sentencebook.getByName(helper, bookName); if(b == null) { b = new Sentencebook(bookName); b.insert(helper); } Sentence sentence = new Sentence("adfjanvnavop"); sentence.setDate(); sentence.setSentencebook(b); sentence.insert(helper);
若是想要经过名字得到某个Label,假如不存在就新建Label,代码同理。
前提:helper是已有的DatabaseHelper,label已经在数据库内(这个很重要,否则会报错的)。
List<Label> labelList = new ArrayList(); labelList.add(label); List<Diary> d = Diary.getByRestrict(helper, null, null, null, labelList, true);
对于Label Diarybook Sentencebook这三个要求名字不能重复的类,若是重复插入名字相同的对象确定会崩溃的。
若是是和数据库有关的错误,请马上联系数据库人员,不要试图本身瞎jb调!
把一小段代码发过来有时候是有用的,但有的时候是没用的。比较好的方法是把整个工程文件弄过来,而后告诉数据库人员如何复现情景,由于数据库人员 真 的 不知道大家点哪一个键怎么跳转,怎么才能触发错误……
固然最好的方法是带着电脑,跟数据库的人面♂调
问:若是如今有一个错误,可是三个写数据库的人都不理我怎么办?
答:买个西瓜/冰淇淋,到空调房里看电影或写做业,直到写数据库的人回复
或者,若是水群在线只是不想理你的话,能够提出给水群买个奶茶w