반응형

이 게시물은 다음 링크를 참조하여 학습했습니다.

 

SQLiteDatabase  |  Android 개발자  |  Android Developers

 

developer.android.com

 

Cursor  |  Android 개발자  |  Android Developers

 

developer.android.com

 

File  |  Android 개발자  |  Android Developers

 

developer.android.com

 

안드로이드 데이터베이스(DB) 프로그래밍 1. [관계형 데이터베이스] (Android Database 1) [Relational Databa

1. 데이터베이스 (Database, DB) 안드로이드 앱에서 사용자 데이터를 저장하고 로드하는 경우는 매우 흔한 일입니다. 앱 실행 중 메모리에 저장된 데이터는 앱의 실행이 종료되면 모두 사라지기 때

recipes4dev.tistory.com

 

안드로이드/Android Cursor를 이용한 DB 데이터 사용 하기 ~ !

안드로이드/Android Cursor를 이용한 DB 데이터 사용 하기 ~ ! 안드로이드에서는 DB에서 가져온 데이터를 쉽게 처리하기 위해서 Cursor 라는 인터페이스를 제공해 줍니다. Cursor는 기본적으로 DB에서 값

arabiannight.tistory.com

오늘은 DataBase를 공부했다. 

DataBase는 컴퓨터과학 기본 5대 과목 중 하나여서 언젠가 이론을 따로 공부하려 했는데,

코딩 위주로 독학하다보니 DataBase가 필요해져서 일단은 기본적인 개념만 알고 사용법 위주로 숙지했다.

사용하는 클래스의 메서드와 SQL문법까지 정리하느라 자료를 정리하는 시간이 좀 길어졌다.

1. DB

 1) 데이터 저장 방법

 앱을 실행하면서 메모리에 저장되는 데이터는 앱이 종료되면 사라지기 때문에, 영구 보관이 가능한 저장소가 필요하다.

 이를 위한 방법이 크게 4가지가 있다.

 1. SharedPreferences

 2. 파일 입출력 API

 3. SQL -> DB

 4. 통신을 통해 데이터를 주고받음

 오늘은 그 중에 3. SQL -> DB에 대해 설명하려 한다.

 2) SQL(Structured Query Language)

 SQL은 관계형 데이터베이스 관리 시스템에서 데이터를 관리하기 위해 사용되는 표준 프로그래밍 언어(Language)이다.

 SQL은 대화식으로 동작하는데, 영어 문법과 의미가 거의 같아서 배우기에 다른 언어에 비해 비교적 난이도가 쉬운 것 같다.

 SQL에 정의된 명령어는 크게 세 가지로 나뉘는데,

 데이터 정의 언어(DDL, Data Definition Language),

 데이터 처리 언어(DML, Data Manipulation Language),

 데이터 제어 언어(DCL, Data Control Language) 가 있다.

  (1) 데이터 정의 언어(DDL, Data Definition Language)

CREATE 구조 생성
ALTER 구조 수정
DROP 구조 삭제
RENAME 구조 이름변경

  (2) 데이터 처리 언어(DML, Data Manipulation Language)

INSERT 입력
DELETE 삭제
UPDATE 수정
SELECT 조회/검색

  (3) 데이터 제어 언어(DCL, Data Control Language)

GRANT 권한 부여
REVOKE 권한 제거
COMMIT 작업단위 실행
ROLLBACK 작업단위 실행취소

2. SQLite

 SQLite는 비교적 적은 용량의 데이터를 처리하는데 적합한 데이터베이스 관리 시스템이다.

 안드로이드 앱과 같은 소규모 프로그램에서 사용하기 적합하고, 실제로 안드로이드에서 많이 사용한다.

 

Downloads - DB Browser for SQLite

(Please consider sponsoring us on Patreon 😄) Windows Our latest release (3.12.1) for Windows: Windows PortableApp There is a PortableApp available, but it’s still the previous (3.12.0) release version. It should be updated to 3.12.1 over the next few

sqlitebrowser.org

 Windows 운영체제 전용 SQLite는 다음 링크에서 다운받을 수 있다.

 

3. DB 용어

 DB는 행렬과 같은 구조로 데이터가 만들어지는데, 이 전체적인 행렬을 테이블(Table)이라 한다.

 속성을 나타내는 행렬에서 열에 해당하는 부분을 컬럼(Column),

 데이터 값을 나타내는 각각의 행들은 로우(Row)라고 보통 부른다.

DB 용어

4. SQLiteDatabase

 안드로이드에서 SQLite 데이터베이스를 사용할 때 가장 핵심이 되는 클래스이다.

 SQLite 데이터베이스를 다루는 기능들이 정의되어 있다.

 많은 메서드들이 포함되어 있었지만, 자주 사용할 것 같은 메서드 위주로 정리했다.

메서드 설명
execSQL() SQL문을 실행한다.
getPath() DB파일의 경로를 반환한다.
isOpen() DB파일이 현재 열려있는지의 bool값을 반환한다.
openDatabase() DB파일을 연다.
openOrCreateDatabase() DB파일이 존재하면 파일을 열고, 존재하지 않으면 만든다.

 

5. Cursor

 1) Query

 커서를 알기 전에 먼저 쿼리를 알아야 한다.

 쿼리(Query)는 우리 말로 "질의"라는 뜻이다.

 누군가에게 질문하여 정보를 요청하는 것이라 생각하면 된다.

 DB에서 SQL문으로 "SELECT"문의 조건을 사용하면 선택된 레코드 집합을 리턴해야 하는데,

 query() 함수 또는 rawQuery() 함수를 사용한다.

 많은 종류의 쿼리 함수가 제공되지만 주로 "SELECT"문 전체를 한번에 전달할 수 있는 rawQuery()함수를 사용한다.

 2) Cursor 

 커서(Cursor)는 사용자가 현재 주시하고 있는 위치에 대한 표시를 말한다. 쉽게 생각해 마우스 '커서'를 생각하면 된다.

 DB에서의 커서도 이와 비슷한 의미이다. DB에서의 커서는 쿼리의 결과로 리턴된 데이터에서 현재 내용을 확인하고 있는 위치 정보를 말한다.

 쿼리의 결과는 하나의 레코드 또는 레코드의 집합이 되는데, 이 때 레코드 집합에서 개별 레코드에 접근하여 값을 확인할 수 있는 기능을 "커서"가 제공한다.

 커서 또한 많은 메서드를 포함하고 있었는데, 자주 사용할 것 같은 메서드 위주로 정리했다.

메서드 설명
moveToFirst Cursor를 첫 번째 행(Row)으로 이동시킨다.
moveToNext Cursor를 다음 행(Row)으로 이동시킨다.
moveToPrevious Cursor를 이전 행(Row)으로 이동시킨다.
moveToPosition Cursor를 해당 Position 행(Row)으로 이동시킨다.
moveToLast Cursor를 마지막 행(Row)으로 이동시킨다.
getInt 테이블의 Integer 값을 반환한다.
getString 테이블의 String 값을 반환한다.
getLong 테이블의 Long 값을 반환한다.
getColumnIndex 테이블의 해당 컬럼 이름을 얻어온다.
getPosition Cursor가 가리키고 있는 테이블 행(Row) Position을 얻어온다.
getColumnName 컬럼 index의 해당하는 컬럼 이름을 얻어온다.
getCount Cursor가 참조할 수 있는 테이블의 행(Row)의 갯수를 얻어온다.
getColumnNames 테이블의 컬럼 명을 순서대로 배열로 얻어온다.
getColumnCount 테이블의 컬럼 갯수를 얻어온다.

 

반응형

+ Recent posts