본문 바로가기

안드로이드 스튜디오

[ 안드로이드 ] 데이터베이스 SQLite 사용법 / CRUD 예제

SQLite 사용법 / CRUD 예제

DB 생성

// DatabaseHandler.java

public class DatabaseHandler extends SQLiteOpenHelper {
    public DatabaseHandler(@Nullable Context context) {
        super(context, Util.DATABASE_NAME, null, Util.DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
    
        // 테이블 생성
        String CREATE_CONTACT_TABLE = "create table " + Util.TABLE_NAME + "("+
                Util.KEY_ID + " integer primary key, " +
                Util.KEY_NAME + " text, " +
                Util.KEY_PHONE + " text )";

        sqLiteDatabase.execSQL(CREATE_CONTACT_TABLE);

    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        // 기존의 contact 테이블을 삭제하고,
        String DROP_TABLE = "drop table " +Util.TABLE_NAME;
        sqLiteDatabase.execSQL(DROP_TABLE, new String[]{Util.DATABASE_NAME});

        // 새롭게 테이블을 다시 만든다.
        onCreate(sqLiteDatabase);
    }
    
    ...

 

데이터 생성하는 함수

// DatabaseHandler.java

public void addContact(Contact contact){
    // 데이터베이스를 가져온다.
    SQLiteDatabase db = this.getWritableDatabase();
    // 테이블의 컬럼이름과 해당 데이터를 매칭해서 넣어준다.
    ContentValues values = new ContentValues();
    values.put(Util.KEY_NAME, contact.name);
    values.put(Util.KEY_PHONE, contact.phone);
    // 데이터베이스에, 위의 데이터를 insert
    db.insert(Util.TABLE_NAME, null, values);
    // db를 닫아줘야 한다.
    db.close();
}

 

// MainActivity.java

DatabaseHandler db = new DatabaseHandler(MainActivity.this);

// 주소록 데이터를 디비에 저장하는 코드
Contact contact = new Contact("홍길동", "010-1111-2222");
db.addContact(contact);

데이터 가져오는 함수

// DatabaseHandler.java

public ArrayList<Contact> getAllContacts() {

    // 1. 데이터베이스를 가져온다.
    SQLiteDatabase db = this.getReadableDatabase();

    // 2. 쿼리문 만든다.
    Cursor cursor = db.rawQuery("select * from contact", null);

    ArrayList<Contact> contactList = new ArrayList<Contact>();

    //    if(cursor.moveToFirst()){
    //        for(int i = 0; i < cursor.getCount(); i++ ){
    //            Contact contact = new Contact(cursor.getInt(0), cursor.getString(1), cursor.getString(2));
    //            contactList.add(contact);
    //            cursor.moveToNext();
    //        }
    //    }

    if(cursor.moveToFirst()){
        do{
            Contact contact = new Contact(cursor.getInt(0), cursor.getString(1), cursor.getString(2));
            contactList.add(contact);
        }while(cursor.moveToNext());
    }

    db.close();

    return contactList;
    }

 

// MainActivity.java

// 데이터를 디비에서 가져와서, 로그 찍기
ArrayList<Contact> contactList = db.getAllContacts();

for(Contact data : contactList){
    Log.i("MyContact",
    "id : " + data.id + " , name : "+data.name+" , phone : "+data.phone);
}

데이터 수정하는 함수

// DatabaseHandler.java

public void updateContact(Contact contact){
    SQLiteDatabase db = this.getWritableDatabase();

//        ContentValues values = new ContentValues();
//        values.put(Util.KEY_NAME, contact.name);
//        values.put(Util.KEY_PHONE, contact.phone);
//
//        db.update(Util.TABLE_NAME, values,
//                Util.KEY_ID + "=?", new String[]{contact.id+""});

//        db.execSQL("update contact set name = '"+contact.name+"' , phone = '"+contact.phone+"' where id = "+contact.id);
    db.execSQL("update contact set name = ? , phone = ? where id = ?" ,
            new String[]{contact.name, contact.phone, contact.id+""});

    db.close();
}

데이터 삭제하는 함수

// DatabaseHandler.java

public void deleteContact(Contact contact){

    SQLiteDatabase db = this.getWritableDatabase();

    db.execSQL("delete from contact where id = ?" , new String[]{ contact.id+""});

    db.close();

}