본문 바로가기

Study/Programming

안드로이드 데이터베이스 - 꼬로미

홧팅2홧팅2


안녕하세요 꼬로미입니다


안드로이드 프로그래밍 데이터베이스에 대한 포스팅입니다




데이터베이스

                                                                                                  



안드로이드에서는 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)


SQLiteOpenHelper 없이 데이터베이스 사용
  • 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안의 리소스들은 모두 텍스트 뷰이어야함)






??메롱하트3

읽어주셔서 감사드리며

뷰업 한번 부탁드려요~