[Android Studio] SQLite (3)

노유성·2023년 5월 4일
0
post-thumbnail

⭐INSERT

🪐예제

String[] projection = {
                UserExerciseLog.UserExerciseLogEntry.COLUMN_EXERCISE,
                        UserExerciseLog.UserExerciseLogEntry.COLUMN_REPS,
                        UserExerciseLog.UserExerciseLogEntry.COLUMN_WEIGHT,
                        UserExerciseLog.UserExerciseLogEntry.COLUMN_SET_COUNT,
                        UserExerciseLog.UserExerciseLogEntry.COLUMN_TOTAL_SET_COUNT,
                        UserExerciseLog.UserExerciseLogEntry.COLUMN_DATE,
                        UserExerciseLog.UserExerciseLogEntry.COLUMN_ORDER
        };
        String sortOrder = UserExerciseLog.UserExerciseLogEntry.COLUMN_ORDER + " DESC";

        String selection = String.format("%s = ?",UserExerciseLog.UserExerciseLogEntry.COLUMN_DATE);
        String[] selectionArgs = {date};
        Cursor cursor = db.query(
                UserExerciseLog.UserExerciseLogEntry.TABLE_NAME,   // The table to query
                projection,             // The array of columns to return (pass null to get all)
                selection,              // The columns for the WHERE clause
                selectionArgs,          // The values for the WHERE clause
                null,                   // don't group the rows
                null,                   // don't filter by row groups
                sortOrder               // The sort order
        );

🪐예제 설명

특정 날짜에 해당하는 레코드의 전체 column의 데이터를 받는 예제이다.

projection (String[])

반환 받고자 하는 column을 작성한다.

selection (String)

where절에 해당한다. 만약에 추가로 찾고싶은 조건이 있다면 AND연 산을 추가하면 된다.

String selection = String.format("%s = ? AND %s = ?",
	UserExerciseLog.UserExerciseLogEntry.COLUMN_DATE,
    UserExerciseLog.UserExerciseLogEntr.COLUMN_TYPE);

selectionArgs (String[])

selection에서 ? 에 해당하는 부분을 순차적으로 넣어주면 된다.

db.query

selection query를 수행한다.

⭐DELETE

특정 날짜에 특정 운동 종목을 가진 레코드를 삭제하는 예제이다.

🪐예제

String selection = UserExerciseLog.UserExerciseLogEntry.COLUMN_DATE + " LIKE ? AND " +
                    UserExerciseLog.UserExerciseLogEntry.COLUMN_EXERCISE + " = ?";
            String[] selectionArgs = {getCurrentDate(), selectedExercise};

            db_write.delete(UserExerciseLog.UserExerciseLogEntry.TABLE_NAME,
                    selection,
                    selectionArgs);

🪐예제 설명

selection

삭제하고자 하는 조건절에 해당한다.

selectionArgs

조건절의 ? 에 해당하는 부분을 순차적으로 넣는다.

db.delete

조건에 맞게 테이블에서 삭제한다.

⭐UPDATE

🪐예제

String reps = repEditText.getText().toString();

ContentValues values = new ContentValues();

values.put(UserExerciseLog.UserExerciseLogEntry.COLUMN_REPS, Integer.parseInt(reps));
String selection = UserExerciseLog.UserExerciseLogEntry.COLUMN_EXERCISE + " = ? AND " +
        UserExerciseLog.UserExerciseLogEntry.COLUMN_DATE + " = ?";
String[] selectionArgs = {
        selectedExercise,
        getCurrentDate()
};

userExerciseLogDb_write.update(
        UserExerciseLog.UserExerciseLogEntry.TABLE_NAME,
        values,
        selection,
        selectionArgs
);

🪐예제 설명

특정 조건을 만족하는 레코드의 REPS column 값을 변경하는 예제이다.

ContenValues

추가할 열의 이름과 데이터를 넣는다.

selection

조건절이다.

selectionArgs

조건절의 ?에 해당하는 값을 넣는다.

db_write.update()

주어진 조건에 맞게 업데이트 하고 업데이터된 레코드의 수를 반환한다.

🌌정리하며

  • 업데이트 시에 values에 아무 값도 없으면 에러가 발생시키고 종료된다.
  • integer값을 입력한다 하더라도 java 코드 내에서는 string으로 입력한다.
  • DB와 소통할 때는 늘 로그를 찍는 습관을 들이자...
profile
풀스택개발자가되고싶습니다:)

0개의 댓글