2017년 3월 21일 화요일

Xamarin, Android : 모바일 DB realm 사용하기.

자마린에서 realm 을 사용하는 법.


일단 안드로이드 프로젝트 하나 만든다.


그런다음 "NuGet 패키지 관리자" 에서...


"Realm" 을 설치한다.


이때, "Realm" 만 설치하면 필요한 관련 항목까지 다 설치해준다.
대충 14개 정도 설치 되는것 같음.

이걸로 Realm 설치 끝.

설치를 했으니 이제 사용을 해보자.
사용할 데이터 셋을 만들어야 한다. 그냥 DB 의 Table 이라 생각하면 된다.


새 항목으로 가서...


클래스를 하나 생성.
클래스 명은 아무거자 자신이 원하는 명칭으로 하면 되고...


일반적인 DB 의 테이블을 만들듯이, 데이터 셋을 정의 하면 된다.
주의 할점은 클래스 생성시 "RealmObject" 를 상속 받아야 한다는 것.

셋을 만들었으니, 이제 데이터 등록.

var realm = Realm.GetInstance()

으로 DB 인스턴스를 생성하고.

realm.Add()

으로 데이터를 넣으면 되고,

realm.All<지정데이터셋>()

으로, 데이터를 조회 하면 된다. 



using Android.App;
using Android.Widget;
using Android.OS;
using Realms;
using System.Collections.Generic;
using System.Linq;

namespace App5
{
    [Activity(Label = "App5", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            using (var realm = Realm.GetInstance())
            {
                // 개별 입력 방식
                realm.Write(() =>
                {
                    realm.Add(new Users
                    {
                        id = 777,
                        name = "son10001"
                    });
                });

                // 일괄입력 방식
                var listUsers = new List<Users>();
                listUsers.Add(new Users { id = 1, name = $"son10001 - 1" });
                listUsers.Add(new Users { id = 2, name = $"son10001 - 2" });
                listUsers.Add(new Users { id = 3, name = $"son10001 - 3" });
                listUsers.Add(new Users { id = 4, name = $"son10001 - 4" });
                listUsers.Add(new Users { id = 5, name = $"son10001 - 5" });

                foreach (var user in listUsers)
                {
                    realm.Write(() => { realm.Manage(user); });
                };


                var numInRealm = realm.All<Users>();

                for (var i = 0; i < numInRealm.Count(); i++)
                {
                    Users newPerson = numInRealm.ElementAt(i);
                    System.Diagnostics.Debug.WriteLine(newPerson.name);
                }
            }
        }
    }
}



... 이렇게.... 이렇게 하고 실행해 보면...


이렇게 입력한 데이터가 출력되는 것을 볼 수 있다.


DB 에 데이터가 쌓이므로 여러번 실행하면 계속해서 데이터가 중복으로 쌓이는 것을 볼 수 있다.