마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

파이버베이스 데이터베이스에서 데이터 저장하는 법 좀 질문드립니다(.child(), .push에 대해)

0 추천

안녕하세요 프로그래밍 공부를 시작한지 얼마 안돼서 공부하다가 잘 안되는 부분이있어 질문 좀 드립니다!!

위의 사진처럼 데이터베이스를 설정하고 데이터 쓰기를 하고싶은데 (위의 사진은 제가 파이이베이스 홈페이지에서 수작업으로 만들었습니다.)

database_Count = 0; // 전역변수
    public void saveData() {
        String s = Integer.toString(database_count);
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference databaseReference = database.getReference();
        databaseReference.child("Board").child("Board_0"+s).child("site").setValue(siteText.getText().toString());
        database_count += 1;
    }

그리고 이런식으로 안드로이드 스튜디오로 작성을하게 되면

이런식으로 되면서 와 성공했다!!! 이렇게 생각을 했는데

어플을 종료하고 다시 정보를 저장하면 Board_01부터 덮어씌우더라구요...ㅎㅎ;;; (전역변수로 0으로 초기화 해버리고 +1씩 하니까 당연히 껏다키면 다시 0으로 초기화 되니 그런 것 같은데...... 바보입니다 저는 ㅠㅠㅠㅠ)

어플에서 저장하기 버튼을 누르면 saveData()함수가 실행되고 그때의 정보들을 database에 저장하고 저장할 때 마다 Board_01~99이런식으로 늘려가면서 저장을 하고 싶은데 

.child("Board_0"+s)이 부분에서 어떤방법을 취해야 하는지 모르겠네요...^^; 친절하게 알려주실분 계신가요?ㅠㅠ 부탁드리겠습니다!

 

popoplz (160 포인트) 님이 2020년 4월 20일 질문

1개의 답변

0 추천
파이어베이스에는 기존 관계형 DB에서처럼 사용하시면 안됩니다. 작성자분이 하려고 하시는 관계형DB의  AutoIncrement 같은 기능이 파이어베이스에는 없어서, push()함수를 사용하셔야만 합니다.

파이어베이스는 전통적인 형태의 게시판 구현용으로는 적합하지 않습니다. 게시판 번호같은경우 가능은 하지만 전체 노드를 조회해서 번호를 매기는 방식을해야하기때문에 게시글이 천 개, 만 개가 넘어갈경우 넘버링를 위해 만 개의 노드를 전부 순회하는 작업을 하기때문에(getChildrenCount함수)리소스 사용이 급격히 늘어납니다. 번호없이 사용하신다면 상관없지만요.
익명사용자 님이 2020년 4월 20일 답변
...