 1. 데이터 베이스 & SQL  2. 안드로이드 에서의 SQLite  3. 사용 메소드 정리  4. Cursor 와 SimpleCursorAdapter  4. 실습.

Slides:



Advertisements
Similar presentations
SQLite 소개 및 안드로이드에서의 사용법
Advertisements

Chapter 16 : Struts 프레임워크 2. chapter 16 : Struts 프레임워크 2.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
Ch.07-5 xml-rpc 사용하기 김상엽.
연결리스트(linked list).
JSP Programming with a Workbook
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
6장 Mysql 명령어 한빛미디어(주).
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
11 테이블 관리와 데이터 딕셔너리 데이터베이스 응용 프로젝트 개발 테이블 구조 변경 데이터 딕셔너리.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
5장 Mysql 데이터베이스 한빛미디어(주).
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
5장. 참조 타입.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Error Detection and Correction
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
KHS JDBC Programming 4 KHS
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
5장 Mysql 데이터베이스 한빛미디어(주).
11장. 1차원 배열.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
You YoungSEok Oracle 설치 You YoungSEok
CHAP 12. 리소스와 보안.
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
C#.
웹 어플리케이션 보안 2016년 2학기 3. Mongo db.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
자바 5.0 프로그래밍.
프로그래밍 개요
JDBC Lecture 004 By MINIO.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
24장. 파일 입출력.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
ADO.NET (SqlConnection, SqlCommand)
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
FileMaker를 이용한 데이터 관리 옥현진(KICE).
8장. spss statistics 20의 데이터 변환
SQLite 소개 및 안드로이드에서의 사용법
2강_첫번째 안드로이드 프로젝트 에뮬레이터(AVD) 만들기 처음 만들어 보는 프로젝트 전체적인 구성 살펴보기
CHAP 21. 전화, SMS, 주소록.
객체기반 SW설계 팀활동지 4.
11. 어댑터뷰 제목. 11. 어댑터뷰 제목 리스트뷰와 그리드뷰 활용법을 배운다. 갤러리와 스피너의 사용법을 익힌다.
데이터 동적 할당 Collection class.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Chapter 10 데이터 검색1.
함수, 모듈.
9 브라우저 객체 모델.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
제 4 장 Record.
 6장. SQL 쿼리.
Docker Study 6~7.
7 생성자 함수.
6 객체.
20 XMLHttpRequest.
교과서 78쪽 학습 목표 정보 관리의 필요성을 이해할 수 있다. 데이터베이스의 개념과 필요성을 이해할 수 있다.
Presentation transcript:

 1. 데이터 베이스 & SQL  2. 안드로이드 에서의 SQLite  3. 사용 메소드 정리  4. Cursor 와 SimpleCursorAdapter  4. 실습

 데이터 베이스 ◦ 논리적으로 연관된 하나 이상의 자료의 모음 ◦ 어떠한 데이터를 고도로 구조화함으로써 검색과 갱신의 효율화를 꾀한다. ◦ 몇 개의 자료 파일을 조직적으로 통합하여 자료항목의 중 복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집 합체.

 1. 똑같은 자료를 중복하여 저장하지 않는 통합된 자료  2. 컴퓨터가 액세스하여 처리할 수 있는 저장장치에 수 록된 자료  3. 어떤 조직의 기능을 수행하는 데 없어서는 안 되며 존재 목적이 뚜렷하고 유용성 있는 운영 자료이기 때 문에 임시로 필요해서 모아 놓은 데이터나 단순한 입 출력 자료가 아니라는 점  4. 한 조직에서 가지는 데이터베이스는 그 조직 내의 모든 사람들이 소유하고 유지하며 이용하는 공동 자료 로서 각 사용자는 같은 데이터라 할지라도 각자의 응 용 목적에 따라 다르게 사용할 수 있다는 점

 데이터베이스를 사용할 때, 데이터베이스에 접근 할 수 있는 데이터베이스 하부 언어. ◦ 구조화 질의어 라 한다. ◦ 데이터 정의어 (DDL) 와 데이터 조작어 (DML) 를 포함한 데 이터베이스용 질의언어의 일종. ◦ SQL 은 관계사상 (relation mapping) 을 기초로 한 대표 적인 언어. ◦ SQL 은 단순한 질의 기능뿐만 아니라 데이터 정의 기능과 조작기능을 갖춤

 단순한 데이터는 파일 형태로도 관리 가능 ◦ 그러나 대량의 데이터를 다루기 위해서는 데이터 베이스 가 필요  안드로이드는 운영체제 차원에서 SQLite 라이브러 리를 포함하고 있으므로 별도의 설정은 필요 없다.

 SQLite ◦ 2000 년도 리처드 힙 (Richard Hipp) 박사에 의해 개발된 무료 DB 엔진. ◦ 거대한 DBMS 에 비할 바는 아니지만 안정적이고 용량이 작아 쇼규모 의 데이터베이스에 적합하다. ◦ 흔히 아이폰, 심비안 등의 모바일 환경에 많이 채용되어 있으며, 휴대용 MP3 등에도 널리 활용된다.

 데이터를 저장하는 장소는 단순한 파일 ◦ 별도의 서버가 필요 없으며 연결, 권한 등을 신경 쓸 필요 가 없다. ◦ 파일일 뿐이므로 편리하게 복사 및 삭제, 이동이 가능하 다. ◦ 복잡한 설정이나 관리정책도 불필요  단 복수 사용자는 지원하지 않는다.  용량이 작고 C 언어로 되어 있어 속도가 매우 빠르 다.

 SQLite 에 대한 상세한 정보는 아래 링크 참조

 1. 정보를 저장할 DB 생성  2. 관리할 정보와 업무 규칙에 적합한 테이블 디자 인 ◦ SQLite 는 상용 DB 와는 다르게 초기화 및 디자인을 SQL 스크립트로 처리해야 한다. ◦ 안드로이드는 DB 를 관리하는 SQLiteOpenHelper 라는 도우미 클래스를 제공한다.

 안드로이드는 DB 를 관리하는 SQLiteOpenHelper 라는 도우미 클래스를 제공하 는데 이름 그대로 DB 를 생성 및 오픈하는 처리를 담당한다. ◦ 즉 어떤식으로 DB 객체를 생성할 것인지는 이 도우미가 판단하도록 되어있다. ◦ 따라서 onCreate, onUpgrade 등의 메서드에 명령만 채 워 놓았다면 더 이상 신경 쓰지 않아도 좋다.

 1. 생성자 ◦ SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) ◦ 첫번째 인수는 DB 를 생성하는 컨텍스트. 보통은 메인 엑 티비티를 전달한다. ◦ Name, version 인수로 전달되는 DB 파일의 이름과 버전 은 이후 DB 를 생성 및 업데이트 할 때 사용된다. ◦ 세번째 인수는 커스텀 커서를 사용하고자 할때 지정하는 데 표준 커서를 사용할 경우엔 null 로 지정.

 도우미 객체를 생성해 놓으면 DB 가 필요한 시점에 다음 세 메서드들이 호출된다. onCreateDB 가 처음 만들어질 때 호출된다 여기서 테이블 을 만들고 초기 레코드를 삽입 onUpgradeDB 를 업그레이드할 때 호출된다. 기존 테이블을 삭제하고 새로 만들거나 ALTER TABLE 로 스키마 를 수정한다. onOpenDB 를 열 때 호출된다.

 1. onCreate ◦ 처음 DB 를 생성할 때 호출되는데 테이블을 생성하는 CREATE TABEL 문을 실행하여 테이블을 만든다.  2. onUpgrade ◦ DB 버전이 변경될 때 호출된다.  두 메서드는 DB 의 스키마에 따라 본체의 구현 코 드가 완전히 달라진다.

 생성 및 업그레이드 메서드를 정의한 후 DB 가 필 요할 때 다음 메서드를 호출한다. getReadableDatabase 읽기 위해 DB 를 연다. 이 단계에서 DB 가 존재하지 않으면 onCreate 가 호출 되며 버전이 바뀌었으면 onUpgrade 가 호출된다. getWritableDatabase 읽고 쓰기 위해 DB 를 연다. 권한이 없 다거나 디스크가 가득차면 실패한다. closeDB 를 닫는다.

 SQLiteOpenHelper 간단 예제 enghan

 long insert(String table, String nullColumnhack, ContentValues values) ◦ DB 에 데이터를 삽입하기 위한 메서드 ◦ 리턴값은 입력한 데이터의 id 인수 설명 table DB 의 table 이름. nullcolumnHack DB 에서는 완전히 비어있는 행을 삽입하는 것을 허용하지 않음. 대신 비 어있다는 것을 표현하기 위해서 NULL 사용. 따라서 만약 NULL 이 들어가 야 할 곳에 들어가게 될 것을 말함. values 생성해 놓은 데이터 맵을 말함

 ContentValues ◦ OpenHelper 를 통해 불러온 DB 에 기록 할 데이터를 작성하 기 위한 클래스  맵에 데이터를 넣는 메서드는 put 메서드를 사용. 모든 타입에 오버 로드 되어 있으므로 필드 타입에 맞는 것을 사용하면 됨.  void put(String key, 데이터 타입 value)  사용 예 ◦ ContentValues data = new ContentValues(); ◦ data.put(“key1”, “ 데이터 1 입니다 ”); ◦ data.put(“key2”, “ 데이터 2 입니다 ”); 생성자설명 ContentValues() 비어있는 디폴트 크기의 맵 생성 ContentValues(int size)Size 만큼의 크기를 가진 맵 생성 ContentValues(ContentValues from) 인수로 받은 contentValues 의 복사본을 생성

 Insert 간단 예제 enghan boy 소년 girl 소녀

 Int delete(String table, String whereClause, Stirng[] whereArgs) ◦ 데이터를 삭제하기 위한 메서드 ◦ 조건에 맞는 데이터만을 삭제 했다면 0, 모든 데이터를 삭제했다면 1 을 리턴한다. 인수설명 tableDB 의 table 이름 whereClause 조건항으로 해당 조건에 맞는 항을 삭제하라는 뜻. Null 을 넣 으되면 모든 행 삭제. whereArgs 조건을 규정하는 argument.

 Delete 간단 예제 enghan boy 소년 enghan boy 소년 girl 소녀

 Int update(String table, ContentValues values, String whereClause, String[] where Args) ◦ 데이터를 갱신하기 위한 메서드 ◦ 리턴값은 갱신한 열의 개수 인수설명 tableDB 의 table 이름 values 갱신 내용을 말함 whereClause 조건항으로 해당 조건에 맞는 항을 삭제하라는 뜻. Null 을 넣 으되면 모든 행 삭제. whereArgs 조건을 규정하는 argument.

 Update 간단 예제 enghan boy 머스마 girl 소녀 enghan boy 소년 girl 소녀

 Cursor query(table, columns, selection, selectionArgs, groupBy, having, orderBy) ◦ DB 에서 데이터를 뽑아오기 위한 메서드. 조건은 굉장히 많지만 대부분이 Null 이 될 가능성이 크다. 인수설명 distinct 검색되는 행 중에서 중복되는 내용을 제거하고 출력. Null 을 지정하면 모두 출 력. 이 행을 제외하고도 쓸 수 있음. tableDB table 의 이름. columns 보여줄 열을 지정. Null 을 하면 보든 열을 보여줌. selection 어떤 행을 검색할지 정함. WHERE 에 해당하는 내용으로 null 을 지정하면 모든 행을 출력 groupByGROUP BY 에 해당하는 내용으로 특정 속성을 기준으로 그룹을 지어 출력. havingGROUP BY 에서 조건을 정하는 부분. 해당 속성 기준으로 조건을 만족시키는 부 분 출력 orderByORDER BY 에 해당하는 내용으로 행을 어느 속성 기준으로 정렬시킬 지 정함. LinitLIMIT 에 해당하는 내용으로 출력 행의 수를 제한

 Select 간단 예제 enghan boy 소년 girl 소녀 enghan boy 소년

 검색에 대한 쿼리 결과는 대단히 양이 많을 수 있 으므로 cursor 라는 클래스를 활용한다. ◦ Cursor 는 조금 더 쉽게 이야기하면 for 문의 제어 변수 와 유사하다. ◦ 랜덤 액세스를 지원하므로 임의 위치로 이동하여 레코드 를 읽을 수 있다. ◦ 커서를 활용하면 많은 양의 데이터도 위치를 가리키는 특 성 덕에 부화를 줄일 수가 있다.

메서드설명 Close 결과셋을 닫는다. getColumnCount 컬럼의 개수를 구한다. getColumnIndex 이름으로부터 컬럼 번호를 구한다. getColumnName 번호로부터 컬럼 이름을 구한다. getCount 결과셋의 레코드 개수를 구한다. getInt 컬럼값을 정수로 구한다. 인수로 컬럼 번호를 전달한다. getDouble 컬럼값을 실수로 구한다. getString 컬럼값을 문자열로 구한다.

메서드설명 moveToFirst 첫 레코드 위치로 이동한다. 결과셋이 비어 있으면 false 를 리턴한다. moveToLast 마지막 레코드 위치로 이동한다. 결과 셋이 비어 있으면 false 를 리턴한다. moveToNext 다음 레코드 위치로 이동한다. 마지막 레코드이면 false 를 리턴한다. moveToPrevious 이전 레코드로 이동한다. 첫 레코드이 면 false 를 리턴한다. moveToPosition 임의의 위치로 이동한다.

 커서를 어댑터에 바인딩해서 리스트 뷰로 출력함  생성자 ◦ SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) 인수설명 context 컨텍스트를 의미함. 보통 메인 액티비티 layout 커서를 출력할 레이아웃을 의미함 c 검색한 데이터의 원본을 가리키는 커서를 의미함 from 검색한 데이터의 열 이름을 배열로 지정함 to 각 열이 어느 위젯으로 출력될지 위젯의 id 를 배열로 지정함

 SimpleCursorAdapter 생성 예제