Android 프로그래밍

본문 바로가기
사이트 내 전체검색


Android 프로그래밍
Android 프로그래밍

3. Firebase Database 사용하기 2

페이지 정보

작성자 관리자 댓글 0건 조회 2,056회 작성일 19-04-30 19:06

본문

3. Firebase Database 사용하기 2

2. Realtime DB에 데이터 저장/업데이트/삭제하기


설정이 완료된 Realtime DB의 데이터를 저장/업데이트/삭제합니다.

해당 작업을 수행하는 데는 여러 가지 API가 사용될 수 있지만 예제에서는 updateChildren()를 사용하여 진행합니다.

updateChildren()은 해당 children의 값들의 일부 혹은 전체를 업데이트할 수 있으며 null 값을 입력하면 해당 children을 삭제할 수 있습니다.


예제에서 저장/업데이트/삭제할 데이터의 구조는 아래와 같이 만듭니다.

 id_list 하부에 중복되지 않는 id를 기준으로 각 id마다 name, age, gender를 포함하고 있는 구조입니다.


1.PNG


2.PNG


3.PNG


4.PNG


위의 데이터 구조에서 각 id 별로 가지고 있는 데이터를 읽거나 저장할 때 사용하는 용도로 클래스를 생성합니다. 데이터를 잠시 담아두는 역할을 수행합니다.


@IgnoreExtraProperties
public class FirebasePost {
    public String id;
    public String name;
    public Long age;
    public String gender;

    public FirebasePost(){
        // Default constructor required for calls to DataSnapshot.getValue(FirebasePost.class)
    }

    public FirebasePost(String id, String name, Long age, String gender) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    @Exclude
    public Map<String, Object> toMap() {
        HashMap<String, Object> result = new HashMap<>();
        result.put("id", id);
        result.put("name", name);
        result.put("age", age);
        result.put("gender", gender);
        return result;
    }
}
 


5.PNG


6.PNG


7.PNG



Realtime DB의 데이터를 저장/업데이트/삭제하는 코드는 다음과 같습니다.
코드를 살펴보면 처음 1~3 줄은 선언문이며 Database의 인스터스를 가져오고 업데이트할 child와 해당 child의 값을 입력할 HashMap을 선언합니다.
boolean의 형태로 해당 데이터의 저장/업데이트와 삭제를 구별하며 add가 false인 경우에는 삭제하는 경우로 해당 child의 값에 null 값을 입력해 데이터를 삭제합니다.

add가 true인 경우에는 앞서 설정한 FirebasePost.class를 사용해서 업데이트할 값을 담은 후에 id를 key로 하여 DB에 전달합니다.

기존에 동일한 id가 존재하는 경우에는 업데이트가 되며, id가 없는 경우에는 새로운 데이터가 추가됩니다.


    public void postFirebaseDatabase(boolean add){
        mPostReference = FirebaseDatabase.getInstance().getReference();
        Map<String, Object> childUpdates = new HashMap<>();
        Map<String, Object> postValues = null;
        if(add){
            FirebasePost post = new FirebasePost(ID, name, age, gender);
            postValues = post.toMap();
        }
        childUpdates.put("/id_list/" + ID, postValues);
        mPostReference.updateChildren(childUpdates);
    }



댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.