.png)
SquiDB 입문 (SQLite framework for Android)
SquiDB란?
Android 용으로 만들어진 SQLite 데이터베이스의 프레임 워크입니다. (참조: Wiki
... yahoo 씨, 정말 고마워요.
SquiDB 도입
Submodule로 추가
1) AndroidStudio에서 적당한 프로젝트를 생성. (API는 14 이상으로 설정해 주세요)
2) SquiDB를 submodule로 프로젝트에 추가하십시오.
$ cd your_project
$ git init
$ git submodule add https://github.com/yahoo/squidb.git module
이제 module
라는 폴더가 자동으로 만들어지고 squidb 관련 폴더가 들어 있다고 생각합니다.
.gradle 수정
Submodule로 추가
1) AndroidStudio에서 적당한 프로젝트를 생성. (API는 14 이상으로 설정해 주세요)
2) SquiDB를 submodule로 프로젝트에 추가하십시오.
$ cd your_project
$ git init
$ git submodule add https://github.com/yahoo/squidb.git module
이제 module
라는 폴더가 자동으로 만들어지고 squidb 관련 폴더가 들어 있다고 생각합니다..gradle 수정
compile project(':squidb')
와 같은 설명이 있으면 compile project(':module:squidb')
와 같이 경로를 변경합니다.자세한 내용은 생성 샘플 프로젝트을 참조하십시오 ..!
이상으로, 빌드를 할 수 있게 되었다고 생각합니다.
다음은 드디어 간단한 사용 예를 써 갑니다.
SquiDB를 사용한 구현
테이블 정의
테이블: people, 열: name (default = "Me", not null)
@TableModelSpec(className = "Person", tableName = "people")
public class PersonSpec {
@ColumnSpec(defaultValue = "Me", constraints = "NOT NULL")
String name;
}
default값이나, not null 제약등을 Annotation으로 기재할 수 있습니다.
className = "Person"은 뭐야...라고 생각하는 당신. 나중에 설명하겠습니다.
데이터베이스 설정
public class ExampleDatabase extends AbstractDatabase {
private static final int VERSION = 1;
private static final String NAME = "ex-database.db";
public ExampleDatabase(Context context) {
super(context);
}
@Override
protected String getName() {
return NAME;
}
@Override
protected Table[] getTables() {
return new Table[]{
Person.TABLE,
};
}
@Override
protected int getVersion() {
return VERSION;
}
@Override
protected boolean onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
return true;
}
}
AbstractDatabase를 상속하고 생성합니다. 다음은 반드시 구현하십시오.
String getName(); // データベースのファイル名
int getVersion(); // データベースのバージョン
// この値がインクリメントされると、マイグレーションが実行されます
Table[] getTables(); // データベース初期化時に、作成したいテーブルのリスト
void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion); // データベースのアップグレードをハンドリングする
ExampleDatabase 클래스의 getTables 메소드 내에서 이전에 클래스 이름으로 정의한 Person이 사용됩니다. Person은 PersonSpec 클래스를 기반으로 자동으로 생성되는 클래스입니다. 그래서 빌드하지 않은 상태에서 Person.TABLE이라고 쓰면 보통 오류가 나옵니다. 빌드하면 화가 나지 않습니다. 안심하세요.
DatabaseDao를 사용하여 데이터베이스 작업
public class MainActivity extends ActionBarActivity {
private DatabaseDao dao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dao = new DatabaseDao(new ExampleDatabase(this));
Person newPerson = new Person();
//newPerson.setName("Sam");
// インサートします
dao.persist(newPerson);
// persistをコールした後は, モデルがIDを持っているはず
long rowId = newPerson.getId();
fetch(rowId);
}
// IDからPersonを取得して名前を表示する
private void fetch(long rowId) {
Person person = dao.fetch(Person.class, rowId);
Toast.makeText(this, person.getName(), Toast.LENGTH_SHORT).show();
}
}
기본 CRUD 작업 샘플은 여기에 있습니다.
마지막으로
본가의 위키 를 보면 정말 아직 아직 부족합니다만, 입문이라고 하는 것으로 이상으로 하겠습니다. 고마워요!
링크
htps : // 기주 b. 코 m / 야호오 / s 구이 db
htps : // 기주 b. 코 m / 야호오 / s 구이 db / 우키
htps : // 기주 b. 코 m / 야호오 / s 쿠이 db / uki / usin g-dabasedao
htps : // 기주 b. 코 m / 마츠 카츠야 / s 쿠이 db 에어 mp ぇ
@TableModelSpec(className = "Person", tableName = "people")
public class PersonSpec {
@ColumnSpec(defaultValue = "Me", constraints = "NOT NULL")
String name;
}
public class ExampleDatabase extends AbstractDatabase {
private static final int VERSION = 1;
private static final String NAME = "ex-database.db";
public ExampleDatabase(Context context) {
super(context);
}
@Override
protected String getName() {
return NAME;
}
@Override
protected Table[] getTables() {
return new Table[]{
Person.TABLE,
};
}
@Override
protected int getVersion() {
return VERSION;
}
@Override
protected boolean onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
return true;
}
}
String getName(); // データベースのファイル名
int getVersion(); // データベースのバージョン
// この値がインクリメントされると、マイグレーションが実行されます
Table[] getTables(); // データベース初期化時に、作成したいテーブルのリスト
void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion); // データベースのアップグレードをハンドリングする
public class MainActivity extends ActionBarActivity {
private DatabaseDao dao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dao = new DatabaseDao(new ExampleDatabase(this));
Person newPerson = new Person();
//newPerson.setName("Sam");
// インサートします
dao.persist(newPerson);
// persistをコールした後は, モデルがIDを持っているはず
long rowId = newPerson.getId();
fetch(rowId);
}
// IDからPersonを取得して名前を表示する
private void fetch(long rowId) {
Person person = dao.fetch(Person.class, rowId);
Toast.makeText(this, person.getName(), Toast.LENGTH_SHORT).show();
}
}
본가의 위키 를 보면 정말 아직 아직 부족합니다만, 입문이라고 하는 것으로 이상으로 하겠습니다. 고마워요!