Android
[안드로이드] SQLite 사용법(JAVA)
codeandcoffee
2024. 6. 7. 21:11
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 작업을 수행하는 방법을 배웠습니다. 이를 통해 로컬 데이터베이스를 활용하여 다양한 기능을 구현할 수 있습니다.