앱 개발/Java

[안드로이드] DB insert, select, delete 문 사용법 (간단한 예제 공유)

맨땅 2022. 3. 25. 13:29
반응형

 

 

 

1. 안드로이드 내부 DB에 반려동물의 이름, 나이, 몸무게, 성별을 저장(insert)

2. DB 데이터를 읽어와서 표출 (select)

3. DB 데이터 초기화 (delete)

 

 


[아래 코드를 보실때 이해를 돕기위해 따로 적어놨습니다]

DATABASE_NAME = "data.db";

TABLE_NAME = "animal" 

칼럼들 = {_id, name, age, weight, gender}

넣은 데이터 값 = {haru, 4, 13, w}, { inho, 5, 8, m}

 

 

DB로 쓸 java class파일을 하나 생성해줍니다. 

 

 

[MySQLiteOpenHelper.java]

public class MySQLiteOpenHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME = "data.db";
    public static final int DATABASE_VERSION = 1;

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

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table animal" +
                "(_id integer primary key autoincrement," +
                "name text, age text, weight text, gender text);";

        db.execSQL(sql); // select를 제외한 모든 sql 명령어 실행
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String sql = "drop table if exists animal;";
        db.execSQL(sql);
        onCreate(db);
    }
}

 

DB, table, 칼럼 명 다 원하시는대로 바꿔서 사용하시면 됩니다

 

 

 

 

MainActivity에 오셔서 상단부분에 DB 사용을 위해 필요한 코드를 입력해줍니다

 

 

 

[MainActivity.java]

public class MainActivity extends AppCompatActivity {

    //DB호출
    MySQLiteOpenHelper helper;
    SQLiteDatabase db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        helper = new MySQLiteOpenHelper(this);
        db = helper.getWritableDatabase(); // insert 를 위해 필요한 권한
        db = helper.getReadableDatabase(); // select 를 위해 필요한 권한

//        dbInsert();
//        dbSelect();
//        dbDelete();

    }

    private void dbInsert() {

        ContentValues dbvalue = new ContentValues();
        // 키, 값의 쌍으로 데이터 입력
        dbvalue.put("name", "haru");
        dbvalue.put("age", "4");
        dbvalue.put("weight", "13");
        dbvalue.put("gender", "w");
        db.insert("animal", null, dbvalue);

//        db.execSQL("INSERT INTO animal VALUES(null, 'inho', '5', '8', 'm');");
        
    }

    private void dbSelect() {

        Cursor cursor;
        cursor = db.rawQuery("SELECT * FROM animal", null);

        if (cursor != null && cursor.getCount() != 0) {
            while (cursor.moveToNext()) {
                Log.d("db_id", cursor.getString(0));
                Log.d("db_name", cursor.getString(1));
                Log.d("db_age", cursor.getString(2));
                Log.d("db_weight", cursor.getString(3));
                Log.d("db_gender", cursor.getString(4));

            }
        }
        cursor.close();
        db.close();
    }

    private void dbDelete() {
        helper = new MySQLiteOpenHelper(this);
        db = helper.getWritableDatabase();
        helper.onUpgrade(db, 1, 2);
        db.close();
        Toast.makeText(this, "DB가 초기화 되었습니다", Toast.LENGTH_SHORT).show();
        return;
    }

}

 

 

Insert

 

insert 방법은 두가지가 있습니다. 한가지 방법은 ContentResolver 가 처리 할 수 있는 값 집합을 저장한 후 insert하는 방법입니다.

ContentValues dbvalue = new ContentValues();
// 키, 값의 쌍으로 데이터 입력
dbvalue.put("name", "haru");
dbvalue.put("age", "4");
dbvalue.put("weight", "13");
dbvalue.put("gender", "w");
db.insert("animal", null, dbvalue);

 다른 방법은 execSQL을 이용하여 insert하는 방법입니다.

db.execSQL("INSERT INTO animal VALUES(null, 'inho', '5', '8', 'm');");

편하신대로 골라서 사용하시면 됩니다!

 

 

Select, Delete

 

select, delete부분은 위에 전체 코드를 보시면 이해하시기 어렵지 않으실 겁니다

 

Log.d로 하단 Log로 db에 데이터가 들어간것을 조회할 수 있습니다.

 

 

 

 

궁금한점 있으시면 편하게 질문주세요

 

 

반응형