안녕하세요 꼬로미입니다
안드로이드 프로그래밍 데이터베이스에 대한 포스팅입니다
데이터베이스
안드로이드에서는 SQLite라는 경량급의 데이터베이스를 지원합니다
SQLite는 SQL을 거의 완전하게 지원하며 관계형 데이터베이스형식을 뜁니다
데이터정의명령어(Data Definition Language) : 테이블 생성, 변경
CREATE, ALTER, DROP, USE데이터조작명령어(Data Manipulation Language) : 데이터 추출, 추가, 삭제, 수정
SELECT, INSERT, DELETE, UPDATE
데이터베이스 생성하기
CREATE TABLE book ( book_id INT NOT NULL auto_increment, title varchar(50) PRIMARY KEY(book_id) ); |
레코드 추가하기
INSERT INTO book ( title, publisher, year, price) VALUES('Operating System Concepts', 'Wiley', '2003', 30700); ... |
레코드 검색하기
SELECT title, publisher, price FROM book; SELECT * FROM books WHERE title LIKE 'Head First%'; |
결과 집합(Result Sets)과 커서(Cursors)
쿼리의 조건을 만족하는 레코드들의 집합이 결과 집합이며
결과 집합에서 사용자는 커서를 사용해 한번에 한 레코드씩 데이터에 접근이 가능
커서는 결과 집합의 레코드들을 포함하고 있는 파일에 대한 포인터의 개념
데이터베이스 사용하기
데이터베이스 사용방법 2가지
SQLiteOpenHelper 사용 (도우미 클래스)
openOrCreateDatabase() 메소드로 데이터베이스 객체 직접 생성
SQLiteOpenHelper를 이용해 데이터베이스 생성
SQLOpenHelper 클래스는 데이터베이스가 존재하면 오픈하며 없으면 생성
SQLiteOpenHelper 클래스를 상속
super(context, DATABASE_NAME, null, DATABASE_VERSION);
context : 데이터베이스 생성 액티비티 전달
name : 데이터베이스 파일명
factory : 커서 지정 매개변수, null 전달시 표준 커서가 사용
version : 데이터베이스의 버전onCreate의 db.execSQL 데이터베이스가 처음으로 생성될 때에 호출
onUpgrade() : 데이터베이스가 업그레이될 필요가 있을 때 호출
데이터베이스의 버전이 올라가면 기존 테이블을 삭제하고 새로 만들어주면 됨
액티비티에서 먼저 dbHelper 객체 생성
SQLiteDatabase getWritableDatabase() : 읽기, 쓰기 모드로 데이터베이스를 오픈
SQLiteDatabase getReadableDatabase() : 읽기 전용 모드로 데이터베이스를 오픈
데이터 추가, 삭제 쿼리하기
execSQL (String sql)
SELECT 명령을 제외한 모든 SQL 문장을 실행Cursor rawQuery (String sql, String[] selectionArgs)
SELECT 명령어를 사용해 쿼리를 실행할 때 사용하는 rawQuery()
쿼리의 결과는 Cursor 객체로 반환Cursor query() : 쿼리를 실행하고 Cursor 객체를 반환
long insert(String table, String nullColumnHack, ContentValues values) : 데이터를 삽입할때 사용
ContentValue는 다양한 메소드들을 가지고 있는 클래스로 (키, 값 형태로 필드값 저장이 가능)
void put(String key, Byte value)
void put(String key, Integer value)
void put(String key, Float value)
void put(String key, String value)int delete() : 데이터베이스에서 조건에 맞는 행을 삭제
int updata() : 데이터베이스에서 조건에 맞는 행을 갱신
프레퍼런스 파일에서 값을 쓸때 Editor객체의 메소드
putBoolean(String key, boolean value)
putInt(String key, int value)
putString(String key, String value)
- openOrCreateDatabase() 메소드를 호출해 데이터베이스 객체를 생성하거나 오픈
SQLiteDatabase openOrCreateDatabase(File file, SQLiteDatabase, CursorFactory factory) :
데이터베이스 오픈하거나 필요시 생성
onCreate()에 추가
db = openOrCreateDatabase(DATABASE_NAME, null); db.execSQL("CREATE TABLE contact (_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, tel TEXT):"); |
데이터베이스 디버깅
sqlite3라고 불리는 명령행 도구를 포함하며 sqlite3를 실행하면
테이블을 화면에 표시하거나 SQL 명령어를 실행할 수 있음
adb shell로 쉘을 실행 후 sqlite3를 실행
데이터베이스와 어댑터
많은 데이터가 저장된 데이터베이스를 사용할때 애플리케이션을 효율적으로 사용하기 위해
SimpleCursorAdapter 객체를 사용합니다.
이 객체는 데이터베이스와 화면을 연결하는 객체로 데이터를 정해진 레이아웃 형식으로 읽어 화면에 표시합니다
메소드
public SimpleCursorAdapter (Conext context, int layout, Cursor c, String[] from, int[] to) |
layout : 데이터를 표시할 레이아웃 리소스
c : 커서객체
from : 문자열 배열로 화면에 표시하고 싶은 컬럼명
to : 각 from안의 컬럼이 표시되는 뷰들의 리스트 (to안의 리소스들은 모두 텍스트 뷰이어야함)
읽어주셔서 감사드리며
뷰업 한번 부탁드려요~
'Study > Programming' 카테고리의 다른 글
안드로이드 네트워크 웹페이지 읽기 예제 - 꼬로미 (0) | 2014.06.12 |
---|---|
안드로이드 콘텐트 제공자 - 꼬로미 (0) | 2014.06.11 |
윈도우 쓰레드 동기화 CRITICAL_SECTION - 꼬로미 (0) | 2014.06.09 |
안드로이드 데이터 스토리지 - 꼬로미 (0) | 2014.06.08 |
안드로이드 방송 수신자 - 꼬로미 (0) | 2014.06.07 |