Android

[Android] SQLite 사용법 (DB 생성 및 연동, 데이터 추가, 삭제)

EEEUN 2022. 8. 4. 13:35

안드로이드에서 SQLite를 사용하여 데이터를 저장 및 관리할 수 있다.

SQLite는 MySQL나 PostgreSQL와 같은 데이터베이스 관리 시스템이지만, 서버가 아니라 응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스이다.

 

https://developer.android.com/training/data-storage/sqlite?hl=ko 

 

SQLite를 사용하여 데이터 저장  |  Android 개발자  |  Android Developers

SQLite를 사용하여 데이터 저장 데이터베이스에 데이터를 저장하는 작업은 연락처 정보와 같이 반복적이거나 구조화된 데이터에 이상적입니다. 이 페이지에서는 개발자가 일반적으로 SQL 데이터

developer.android.com

ㄴ SQLite를 사용한 데이터 관리에 대한 안드로이드 공식 문서

 

1. SQLite DB 생성

테이블 정보를 따로 빼서 정리했다.

package com.example.simple_pocket_money_entry.add;

public class TableInfo {
    public static final String TABLE_NAME = "myBreakdown";
    public static final String COLUMN_NAME_ID = "id";
    public static final String COLUMN_NAME_TYPE = "type";
    public static final String COLUMN_NAME_DATE = "date";
    public static final String COLUMN_NAME_CONTENT = "content";
    public static final String COLUMN_NAME_CATEGORY = "category";
    public static final String COLUMN_NAME_AMOUNT = "amount";
}

테이블 정보를 따로 빼서 정리하면 테이블을 더 효율적으로 관리할 수 있다.

 

DBHelper.java

package com.example.simple_pocket_money_entry.add;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

public class DBHelper extends SQLiteOpenHelper {

    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "ConsumptionList.db";

    public static final String SQL_CREATE_TABLE =
            "CREATE TABLE " + TableInfo.TABLE_NAME + " (" +
                    TableInfo.COLUMN_NAME_ID + " INTEGER PRIMARY KEY, " +
                    TableInfo.COLUMN_NAME_TYPE + " TEXT," +
                    TableInfo.COLUMN_NAME_DATE + " TEXT," +
                    TableInfo.COLUMN_NAME_CONTENT + " TEXT," +
                    TableInfo.COLUMN_NAME_CATEGORY + " TEXT," +
                    TableInfo.COLUMN_NAME_AMOUNT + " TEXT)";

    private static final String SQL_DELETE_TABLE =
            "DROP TABLE IF EXISTS " + TableInfo.TABLE_NAME;

    public DBHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(SQL_DELETE_TABLE);
        onCreate(db);
    }
}

SQLite 데이터베이스를 생성하고 사용하려면 SQLiteOpenHelper를 extends해야 한다.

테이블을 생성할 때 쓸 SQL_CREATE_TABEL 문과 테이블을 삭제할 때 쓸 SQL_DELETE_TABLE 문을 생성한다.

이 때 작성하는 SQL문은 MYSQL의 SQL문처럼 작성해주면 된다.

참고로 SQL_CREATE_TABLE 문을 작성할 때 띄어쓰기나 큰따옴표를 잘못 입력하면 에러가 엄청나게 쏟아지니 주의해야한다.

 

2. SQLite DB에 데이터 추가하기(Insert)

테이블 정보(TableInfo.java)와 DB 생성에 관한(DBHelper.java) 작업을 마쳤으니, 본격적으로 SQLite DB를 사용할 차례이다.

 

데이터 추가 기능

DBHelper helper = new DBHelper(AddActivity.this);
SQLiteDatabase db = helper.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(TableInfo.COLUMN_NAME_TYPE, type);
values.put(TableInfo.COLUMN_NAME_DATE, date);
values.put(TableInfo.COLUMN_NAME_CONTENT, content);
values.put(TableInfo.COLUMN_NAME_CATEGORY, category);
values.put(TableInfo.COLUMN_NAME_AMOUNT, amount);

long newRowId = db.insert(TableInfo.TABLE_NAME, null, values);
if (newRowId == -1) {
    customToastView("내역을 추가하지 못했습니다.");
} else {
    customToastView("내역을 추가하였습니다.");
}
db.close();

위에서 만든 DBHelper를 받아 helper를 만들고, 데이터를 입력할 db를 myDBHelper. getWritableDatabase()로 선언한다. 

이 메소드는, DB가없으면  OnCreate()를 선언하고,  Version이 변경되면 OnUpgrade()를 선언한다.

 

ContentValues를 하나 선언해준다.  여기에 들어가는 데이터가 데이터베이스에 들어갈 것이다.

newRowId에는 데이터를 추가한 테이블이 몇 번 행인지 알려준다. 만약 데이터 추가에 실패했다면 결과로 -1을 반환한다.

 

3. SQLite DB에 있는 데이터 삭제하기(Delete)

 

모든 데이터 삭제

DBHelper helper = new DBHelper(AddActivity.this);
SQLiteDatabase db = helper.getReadableDatabase();
db.execSQL("DELETE FROM " + TableInfo.TABLE_NAME);

DB에 있는 모든 데이터를 삭제한다.

특정 데이터만 삭제하는 기능 또한 db.execSQL()로 가능하다.

 

 

DB에 저장된 데이터를 GUI 툴을 사용하여 눈으로 직접 확인하고 싶다면 이 글을 참고하자.

https://eeeun.tistory.com/entry/Android-SQLite-Database-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%95%EB%B3%B4-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0-DB-browser-for-SQLite

 

[Android] SQLite Database 데이터 정보 확인하기 (DB browser for SQLite)

안드로이드의 SQLite를 활용하여 데이터 CRUD를 공부하던 중, SQLite 데이터를 눈으로 조회할 수 있는 방법은 없을까 하고 찾아봤다. 구글링을 해보니 DB browser for SQLite 라는 프로그램을 사용하면 데

eeeun.tistory.com