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

2022. 3. 25. 13:29·앱 개발/Java
반응형

 

 

 

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에 데이터가 들어간것을 조회할 수 있습니다.

 

 

 

 

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

 

 

반응형

'앱 개발 > Java' 카테고리의 다른 글

[안드로이드] 웹 서버에 데이터 요청 (Open API 활용)  (0) 2022.03.30
[안드로이드] 서버에 데이터 요청 및 응답 (소켓 통신)  (0) 2022.03.29
[안드로이드] 요일별 toggle button 만들기 - fragment + 해당 요일 가져오기  (0) 2022.03.17
[안드로이드] CircleProgressBar 그리기 (github 라이브러리 사용)  (0) 2022.03.02
[Android] DB데이터 차트 표출 - MPAndroidChart  (0) 2022.02.24
'앱 개발/Java' 카테고리의 다른 글
  • [안드로이드] 웹 서버에 데이터 요청 (Open API 활용)
  • [안드로이드] 서버에 데이터 요청 및 응답 (소켓 통신)
  • [안드로이드] 요일별 toggle button 만들기 - fragment + 해당 요일 가져오기
  • [안드로이드] CircleProgressBar 그리기 (github 라이브러리 사용)
맨땅
맨땅
다른 개발자분들에게 도움이 되었으면 좋겠습니다
  • 맨땅
    맨땅에 코딩
    맨땅
  • 전체
    오늘
    어제
    • 분류 전체보기 (48)
      • 프로그래밍 지식 (1)
      • 즐거운 웹 개발 (7)
        • Setting (3)
        • 프로그래밍 (1)
        • HTML, CSS (1)
      • 앱 개발 (29)
        • Java (26)
        • Kotlin (0)
        • Setting (2)
        • 프로그래밍 (0)
      • AI (1)
        • Setting2 (0)
        • 프로그래밍 (0)
        • 크롤링 (1)
      • DB (9)
      • ---------------------------.. (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
맨땅
[안드로이드] DB insert, select, delete 문 사용법 (간단한 예제 공유)
상단으로

티스토리툴바