Android

[안드로이드] SQLite 사용법(JAVA)

codeandcoffee 2024. 6. 7. 21:11
안드로이드 SQLite 강좌 (Java)

1. SQLite 소개

SQLite는 안드로이드 애플리케이션 내에 경량의 데이터베이스를 내장하여 사용할 수 있게 해줍니다. 주로 로컬 데이터를 저장하고 관리하는 데 사용됩니다.

2. SQLiteOpenHelper 클래스 생성

SQLiteOpenHelper는 데이터베이스를 생성하고 관리하는 데 도움이 되는 안드로이드의 기본 클래스입니다. 데이터베이스를 생성하고 스키마를 관리하기 위해 이 클래스를 상속받아야 합니다.

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

public class DatabaseHelper extends SQLiteOpenHelper {
    
    private static final String DATABASE_NAME = "example.db";
    private static final int DATABASE_VERSION = 1;

    // 테이블 생성 SQL 문
    private static final String TABLE_CREATE =
            "CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

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

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS users");
        onCreate(db);
    }
}

3. 데이터 삽입

데이터베이스에 데이터를 삽입하는 방법입니다. SQLiteDatabase 객체의 insert 메서드를 사용합니다.

import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;

public void insertUser(String name, int age) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("name", name);
    values.put("age", age);
    
    db.insert("users", null, values);
    db.close();
}

4. 데이터 조회

데이터베이스에서 데이터를 조회하는 방법입니다. SQLiteDatabase 객체의 query 메서드를 사용합니다.

import android.database.Cursor;

public Cursor getAllUsers() {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query("users", null, null, null, null, null, null);
    return cursor;
}

5. 데이터 업데이트

데이터베이스의 데이터를 업데이트하는 방법입니다. SQLiteDatabase 객체의 update 메서드를 사용합니다.

public void updateUser(int id, String name, int age) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("name", name);
    values.put("age", age);

    db.update("users", values, "id = ?", new String[]{String.valueOf(id)});
    db.close();
}

6. 데이터 삭제

데이터베이스에서 데이터를 삭제하는 방법입니다. SQLiteDatabase 객체의 delete 메서드를 사용합니다.

public void deleteUser(int id) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete("users", "id = ?", new String[]{String.valueOf(id)});
    db.close();
}

7. 전체 코드

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

public class DatabaseHelper extends SQLiteOpenHelper {
    
    private static final String DATABASE_NAME = "example.db";
    private static final int DATABASE_VERSION = 1;

    // 테이블 생성 SQL 문
    private static final String TABLE_CREATE =
            "CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

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

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS users");
        onCreate(db);
    }

    public void insertUser(String name, int age) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age", age);
        
        db.insert("users", null, values);
        db.close();
    }

    public Cursor getAllUsers() {
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.query("users", null, null, null, null, null, null);
        return cursor;
    }

    public void updateUser(int id, String name, int age) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age", age);

        db.update("users", values, "id = ?", new String[]{String.valueOf(id)});
        db.close();
    }

    public void deleteUser(int id) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete("users", "id = ?", new String[]{String.valueOf(id)});
        db.close();
    }
}

결론

SQLiteOpenHelper 클래스를 사용하여 데이터베이스를 생성하고, 데이터를 삽입, 조회, 업데이트, 삭제하는 기본적인 CRUD 작업을 수행하는 방법을 배웠습니다. 이를 통해 로컬 데이터베이스를 활용하여 다양한 기능을 구현할 수 있습니다.