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

Slides:



Advertisements
Similar presentations
CUBRID 소개 (Object 개념) 서비스 사업부 / 기술지원팀. 목차 구조 일반적 특징 객체지향 특징 ORDB 개념을 이용한 스키마 ORDB 개념을 이용한 질의.
Advertisements

1 SQL 정보보호학과 양 계 탁. 2 SQL 개요 SQL 개요 3 Database u 연관된 데이터들의 집합 u 데이터를 쉽게 관리하는 프로그램 종 류종 류 관계형 데이터베이스 객체지향형 데이터베이스 계층형 데이터베이스 네트워크 데이터베이스 데이터를 2 차원적인 테.
 1. 데이터 베이스 & SQL  2. 안드로이드 에서의 SQLite  3. 사용 메소드 정리  4. Cursor 와 SimpleCursorAdapter  4. 실습.
Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
SQL 언어 SQL.
소리가 작으면 이어폰 사용 권장!.
데이터베이스 시스템.
소프트웨어시스템설계(6주) 데이터베이스 연동
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
관계 대수와 SQL.
Database & Internet Computing Laboratory 한 양 대 학 교
C#에서 데이터베이스 연동 방법.
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
APM 실습 (MySQL).
SQL-99: 스키마 정의, 기본제약조건, 질의어 충북대학교 구조시스템공학과 시스템공학연구실
Chapter 05 SQL 인젝션 공격.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
JDBC 프로그래밍 이수지 이동주 1.
SQL 개요 SQL 개요 - SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나
10장. 데이터베이스 보안과 권한 관리 데이터베이스 보안과 권한 관리
MySQL performance Xhark 김재홍.
데이터베이스 담당교수 신정식 Chapter 4 SQL(1).
Information Technology
데이터베이스 와 JDBC 1.데이터베이스와 데이터베이스 관리 시스템은? 2.데이터베이스 장점?
Chapter 01 데이터베이스 시스템.
11장. 데이터베이스 서버 구축과 운영.
오라클 데이터베이스 성능 튜닝.
2007. Database Term Project Team 2 윤형석, 김희용, 최현대 우경남, 이상제
롯데마트 CRM 데이터 분석 교육 2014년 12월 > RE::VISION 전용준 리비젼컨설팅 대표
MySQL 기본 사용법.
12. 데이터 저장과 관리 제목. 12. 데이터 저장과 관리 제목 데이터베이스의 기본 개념을 배운다. SQLite의 사용법을 배운다. SQLite를 이용해 앱을 개발한다. SQLite GUI 툴 사용법을 익힌다.
Chapter 05 데이터베이스 프로그래밍.
9. 데이터베이스 9.5 SQL을 사용하는 프로그램 9.6 데이터폼 작성기를 사용하는 프로그램
6장. 물리적 데이터베이스 설계 물리적 데이터베이스 설계
4.2 SQL 개요 SQL 개요 SQL은 IBM 연구소에서 1974년에 System R이라는 관계 DBMS 시제품을 연구할 때 관계 대수와 관계 해석을 기반으로, 집단 함수, 그룹화, 갱신 연산 등을 추가하여 개발된 언어 1986년에 ANSI(미국 표준 기구)에서 SQL.
ER-Win 사용 방법.
14 뷰(View) 뷰의 개념 뷰 관리.
뷰와 저장 프로시저 뷰의 개념을 이해한다. 뷰의 정의와 관리 방법을 이해한다. 뷰를 사용함으로써 생기는 장점을 알아본다.
16장. 테이블의 변경 새로운 행 삽입 테이블에서 테이블로 행을 복사 행 값의 변경 테이블에서 행 삭제
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
SQL.
YOU Youngseok 트랜잭션(Transaction) YOU Youngseok
○ 본 강의 자료는 이지스퍼블리싱(주)에서 제공하는 강의 교안입니다.
01 데이터베이스 개론 데이터베이스의 등장 배경 데이터베이스의 발전 과정 데이터베이스의 정의 데이터베이스의 특징
강사: 이종인 다우 교육원 전임강사 / 온디멘드 수석 컨설턴트 / FMG 수석 컨설턴트
ㅇ 스프링 설정파일 (dispatcher-servlet.xml)
SQL (structured query language)
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
Chapter 3: Introduction to SQL
고급 T-SQL.
CHAPTER 06. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
정보처리기사 8조 신원철 양진원 유민호 이기목 김다연 윤현경 임수빈 조현진.
Chapter11 웹 스토리지 & 웹 데이터베이스
SQL Query in the SSMS : DB, Table
JSP 게시판 구현.
View(뷰) 1 가상 테이블(Virtual Relation)
Database 중고차 매매 DB 비즈니스IT 윤동섭.
3장. SQL Server 2008전체 운영 실습 및 DB와 프로그램의 연동
SQLite 소개 및 안드로이드에서의 사용법
SQL INJECTION MADE BY 김 현중.
06. SQL 명지대학교 ICT 융합대학 김정호.
Android -Data Base : 김성록 GyeongSang Univ. IT.
제 8장 데이터베이스.
테이블 관리 테이블 생성,수정,삭제 데이터 입력 수정, 삭제 2010학년도 2학기.
뇌를 자극하는 Windows Server 장. 데이터베이스 서버.
Stored program 장종원
Data Base Mysql.
GB ridge 웹 모바일및 빅데이터 응용과정 3주차: 데이터베이스 프로그래밍 [경기도형 대학생 취업브리지 사업]
Presentation transcript:

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

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

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

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

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

안드로이드에서의 SQLite 데이터를 저장하는 데 하나의 파일만을 사용 용량이 작고 C언어로 되어 있어 속도가 매우 빠르 다. 단 복수 사용자는 지원하지 않는다. 용량이 작고 C언어로 되어 있어 속도가 매우 빠르 다. 안드로이드 SDK에 SQLite 라이브러리를 포함하고 있으므로 별도의 설정은 필요 없다

SQLite Data types NULL : The value is a NULL value. INTEGER : The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value. REAL : The value is a floating point value TEXT : The value is a text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16LE). BLOB(Binary Large Object) : The value is a blob of data, stored exactly as it was input.

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

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

SQLiteOpenHelper 도우미 객체를 생성해 놓으면 DB가 필요한 시점에 다음 세 메서드들이 호출된다. onCreate onUpgrade DB를 업그레이드할 때 호출된다. 기존 테이블을 삭제하고 새로 만들거나 ALTER TABLE로 스키마를 수정한다. onOpen DB를 열 때 호출된다.

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

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

SQLiteOpenHelper SQLiteOpenHelper 간단 예제 - MainActivity

SQLiteOpenHelper SQLiteOpenHelper 간단 예제 - DBHelper

SQLite 생성 확인 DDMS 화면 실행

SQLite 생성 확인 data – data – 본인 패키지

SQLite 생성 확인 본인 패키지 네임 – databases에서 확인

DB에서의 데이터 삽입 - Insert 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 예제 Insert 간단 예제

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

Delete 예제 Delete 간단 예제

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

Update 예제 Update 간단 예제

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

Select 예제 Select 간단 예제

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

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

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

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

SimpleCursorAdapter 생성 예제