數據庫接口使用示例


考慮到我們的接口文檔可能不是很清晰,昨天對接的時候也發現UI人員對我們的接口邏輯不太理解,所以這里寫幾個典型范例。雖然對接也快對接完了(逃,但是這樣至少免得以后忘記了。

(注:這里的代碼都測試過,放在HeartTrace\app\src\androidTest\java\com\example\dell\db\examples\中。持續性更新。)


幾個基本原則

任何新建的對象,在insert之前,是不會到數據庫里的!!!!!!不管怎樣都不會!!!!!!!!!

任何已有的對象,在修改之后,如果不update,修改也不會被更新到數據庫里!!!!!!!!!不管怎樣都不會!!!!!!!!!!

只有通過getAll, getByRestrict, getAllLabel等方法獲取的Diary Sentence Label Diarybook Sentencebook對象才指向數據庫中的一個表項,直接new的會被認為是一個新的表項!!!

注:

Diary要求:text(日記內容)可以為空,date(日期)不能為空,diary book(日記本)可以為空(TODO:這個以后肯定會改成不能為空的!)

Sentence要求:text(日記內容)可以為空,date(日期)不能為空,sentence book(瓶子)不能為空

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM