본문 바로가기

Android - sqlite

mobile/android by 낼스 2019. 7. 16.

SQLiteDatabase(android.database.sqlite.SQLiteDatabase) 
    - 데이터베이스를 다루는 작업(추가, 삭제, 수정, 쿼리)

SQLiteOpenHelper(android.database.sqlite.SQLiteOpenHelper)
    - 데이터베이스의 생성, 열기, 업그레이드

# query
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs,
String groupBy, String having, String orderBy, String limit)

    * table  질의를 수행할 테이블 이름입니다.
    * columns  자료를 받아올 필드들입니다. null을 입력하면 모든 필드를 반환합니다.
    * selection  SQL의 "where" 구문에 해당되는 조건을 입력합니다. 조건이 많을 경우, ?로 대체합니다.
    * selectionArgs  selection을 ?로 지정하였을 경우, 그 조건들을 입력합니다.
    * groupBy  SQL의 "group by"구문에 해당합니다.
    * having  groupBy를 지정했을 경우, 그 조건을 넣어줍니다.
    * orderBy  결과값 정렬 방식을 지정합니다. null을 입력하면 기본 정렬을 수행합니다.
    * limit  결과값의 개수를 제한합니다.

               // 모든 레코드를 반환하는 쿼리를 실행합니다.
Cursor all = myDB.query("data", null, null, null, null, null, null, null);
               // 이름이 google인 레코드를 반환하는 쿼리를 실행합니다.
Cursor sel = myDB.query("data", "name = google", null, null, null, null, null, null);


# 데이터베이스 값을 가지는 객체, Cursors와 ContentValues


Cursor 인터페이스의 주요 메소드는 다음과 같습니다.

    * moveToFirst  커서가 쿼리(질의) 결과 레코드들 중에서 가장 처음에 위치한 레코드를 가리키도록 합니다.
    * moveToNext  다음 레코드로 커서를 이동합니다.
    * moveToPrevious  이전 레코드로 커서를 이동합니다.
    * getCount  질의 결과값(레코드)의 갯수를 반환합니다.
    * getColumnIndexOrThrow  특정 필드의 인덱스값을 반환하며, 필드가 존재하지 않을경우 예외를 발생시킵니다.
    * getColumnName  특정 인덱스값에 해당하는 필드 이름을 반환합니다.
    * getColumnNames  필드 이름들을 String 배열 형태로 반환합니다.
    * moveToPosition  커서를 특정 레코드로 이동시킵니다.
    * getPosition  커서가 현재 가리키고 있는 위치를 반환합니다.


// 레코드로부터 이름을 받아옵니다.
String name = result.getString(1);
// 레코드로부터 전화번호를 받아옵니다.
long phone = result.getLong(2);


# 코드 -> 데이터베이스에 자료 입력하기 : ContentValues (android.content.ContentValues)
위의 Cursor와는 반대로, 자료를 데이터베이스에 입력하기 위해서 ContentValues 객체를 데이터베이스의 레코드와 동일하게 사용합니다. ContentValues 객체에 데이터베이스 테이블에 맞게 자료를 입력한 후, SQLiteDatabase 클래스의 insert()메소드를 사용하여 데이터베이스에 새로운 레코드를 추가합니다.

// 필요한 데이터를 입력합니다.
ContentValues newValues = new ContentValues();
newValues.put("name", "구글");
newValues.put("phone", "1234567");
// 레코드를 추가합니다.
myDB.insert("data", null, newValues);

'mobile > android' 카테고리의 다른 글

adb command  (0) 2019.07.18
View Class Diagram 클래스 다이어그램  (0) 2019.07.18
Android - adb devices  (0) 2019.07.16
Android - style Theme  (0) 2019.07.16
Android - Resource R.java  (0) 2019.07.16

댓글