數據庫接口使用示例

考慮到咱們的接口文檔可能不是很清晰,昨天對接的時候也發現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

方法1:

// 獲取
        DatabaseHelper helper = new DatabaseHelper(context); // 這個context視狀況而定,多是this或者getApplicationContext()

        // 釋放
        helper.close();

方法2:

// 獲取
        DatabaseHelper helper = OpenHelperManager.getHelper(context, DatabaseHelper.class); // context同上

        // 釋放
        OpenHelperManager.releaseHelper();


目錄

Example 0. 將一個新的日記插入已有日記本,並插入標籤
Example 1. 經過名字判斷某個瓶子是否存在;若是不存在,則新建這個瓶子。並將新建的小紙條插入這個瓶子
Example 2. 經過單個Label查找全部的Diary
一些常見的錯誤操做


Example 0. 將一個新的日記插入已有日記本,並插入標籤

前提: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操做,其實徹底同理。


Example 1. 經過名字判斷某個瓶子是否存在;若是不存在,則新建這個瓶子。並將新建的小紙條插入這個瓶子

前提: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,代碼同理。


Example 2. 經過單個Label查找全部的Diary

前提: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

相關文章
相關標籤/搜索