· LANGUAGE/└ Java
[ Java / DB ] DB에 대상이 없는 경우
감자도리22
2024. 1. 23. 19:14
환경 : Eclipse / DBeaver
(추가) JDBC 클래스 파일
package jdbc.util;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class JdbcHelper {
//JdbcTemplate을 생성하는 메소드 구현
// = 아무나 객체 없이 접근 가능하게 구현
public static JdbcTemplate getJdbcTemplate() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUsername("kh13");
dataSource.setPassword("kh13");
dataSource.setDriverClassName("oracle.jdbc.OracleDriver");
dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:xe");
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource);
return jdbcTemplate;
}
}
[전체 코드]
import org.springframework.jdbc.core.JdbcTemplate;
import jdbc.util.JdbcHelper;
public class Practice {
public static void main(String[] args) {
//사번을 이용해서 사원명, 부서, 입사일, 급여를 변경하도록 구현
//데이터
int empNo = 22; //없는 사번
String empName = "바꾼이름";
String empDept = "바꾼부서";
String empDate = "2024-01-01";
int empSal = 0;
//처리
JdbcTemplate jdbcTemplate = JdbcHelper.getJdbcTemplate();
String sql = "update emp "
+ "set emp_name=?, emp_dept=?, emp_date=?, emp_sal=? "
+ "where emp_no = ?";
Object[] data = {empName, empDept, empDate, empSal, empNo};
//update 메소드는 반환형이 int이며, 적용된 행의 개수가 반환된다
int count = jdbcTemplate.update(sql, data);
//System.out.println("count = " + count);
//출력
if(count > 0)
System.out.println("사원 정보 변경 완료");
else
System.out.println("존재하지 않는 사원번호");
}
}
데이터베이스에 값을 변경(Update)할 때 없는 번호의 값을 변경하려고 시도한다면 에러없이 적용된다는 결함이 있다. 따라서 try-catch문 등을 사용하여 없는 값의 데이터 수정에 대한 코드를 작성하기 어렵다.
하지만, 데이터베이스에서 데이터를 삽입할 때 아래와 같은 정보가 뜨게 된다.

이처럼 업데이트된 행의 수가 0인 경우에는 변경된 값이 없다는 뜻이 된다. 따라서 이를 활용하여 번호의 존재여부를 분류할 수 있다.
해당하는 코드는 아래와 같다.
//update 메소드는 반환형이 int이며, 적용된 행의 개수가 반환된다
int count = jdbcTemplate.update(sql, data);
//System.out.println("count = " + count);
//출력
if(count > 0)
System.out.println("사원 정보 변경 완료");
else
System.out.println("존재하지 않는 사원번호");
update() 메소드의 경우 반환형이 int형이다. 즉, 적용된 행의 개수가 반환된다. 따라서 수정할 값의 반환 값을 int 형 변수에 넣어준 후, 그 값이 0이라면 존재하지 않는 번호가 된다.
개인 공부 기록용입니다:)
728x90