1. 자바에서 SQL파일 만들고 접근하기
자바에서도 SQL 파일을 만들고, 또 접근할 수도 있다.
우선 파일을 만들 때 잘 살펴봐보자.
SQL파일을 만들 수 있다.
SQL파일을 만들면 이클립스에서도 SQL문을 작성할 수 있게 된다.
자바에서 바로 코드로 SQL문을 작성하려하면 헷갈리니 여기서 우선 코드 작업을 한 후에 복사해 붙여넣기 하는 방식으로 하려한다.
2. SQL문 작성하고 실행하기
1) SQL문 작성하기
이제 자바에서 SQL문을 작성해보자.
여기서 주의사항이 있다.
SQL 종결문자인 세미콜론(;)을 사용하면 오류가 나기 때문에 사용하면 안된다.
우선 첫 번째로는 아래와 같이 StringBuilder를 활용하여 새로운 인스턴스를 만든 뒤 SQL문을 계속 추가해가는 방식으로 SQL문을 작성하려한다.
(* 되새기기 : StringBuilder는 문자열 연산을 가능하게 해주는 클래스! .append를 사용하여 문자열을 추가해준다!)
StringBuilder sql = new StringBuilder();
sql.append(" INSERT INTO sungjuk(sno, uname, kor, eng, mat, addr, wdate)");
sql.append(" VALUES (sungjuk_seq.next.val, '손흥민', 99, 98, 97, 'Seoul', sysdate)");
여기서 SQL문은 앞에 띄어쓰기를 꼭 해주는 것이 좋다(팁).
왜냐하면 이것은 런이 되기 전에는 문자열에 불과하기 때문에 모든 코드가 붙어서 출력되기 때문이다.
그래서 강사님은 띄어쓰기를 해준 후 맨 앞의 명령어를 대문자로 적어서 구분해주는 방식을 주로 쓰신다고 한다.
결국 이러한 방식은 Run을 해보아야지 오류나 결과를 볼 수 있다.
2) 작성된 문자열을 SQL 형식으로 변환하기
작성된 문자열을 SQL 형식으로 변환해보자.
String 자료형인 SQL문을 SQL형식으로 변환하는 것은 간단한 명령어로 가능하다.
바로 PreparedStatement 클래스의 .prepareStatement() 메서드를 활용하는 것이다.
우리가 Connection 클래스로 DB를 연동하였고, 그 연동된 것을 활용해야한다.
(우리가 이 SQL문을 Connection 클래스로 선언한 DB에서 실행시킬 것이기 때문에)
코드는 아래와 같다.
(Connection 클래스의 참조변수는 con으로 선언했다)
PreparedStatement pstmt = con.prepareStatement(sql.toString());
3) SQL문 실행하기
실행은 .executeUpdate() 메서드를 활용한다.
이 메서드는 SQL문의 INSERT, UPDATE, DELETE문 실행할 때 사용되며 값을 int형으로 반환해준다.
① INSERT
이제 아래의 코드를 통해 새로운 행을 insert 해보자.
int cnt = pstmt.executeUpdate();
실행 결과는 아래와 같다.
② UPDATE
이번엔 지금 집어넣은 행의 tot 값과 aver 값을 업데이트해보려한다.
똑같이 SQL문을 활용하여 집어넣을 것이다.
이 때 전체 작업은 필요없고 sno값이 41인 손흥민의 토탈점수와 평균점수만 업데이트 하면 되기에 where 조건문을 활용하려한다.
코드는 아래와 같다.
StringBuilder sql = new StringBuilder();
sql.append(" UPDATE sungjuk ");
sql.append(" SET tot=kor+eng+mat ");
sql.append(" , aver=(kor+eng+mat)/3 ");
sql.append(" WHERE sno=41");
PreparedStatement pstmt = con.prepareStatement(sql.toString());
int cnt = pstmt.executeUpdate(); // 실행했을 때 행의 갯수가 반환
if(cnt==0) {
System.out.println("행 수정 실패!");
} else {
System.out.println("행 수정 성공!");
} // if end
// 자원 반납
pstmt.close();
con.close();
③ DELETE
이번엔 행을 지워보자!
이번 공부를 위해 만든 행만 따로 지우려한다.
StringBuilder sql = new StringBuilder();
sql.append(" DELETE FROM sungjuk WHERE sno=41 ");
PreparedStatement pstmt = con.prepareStatement(sql.toString());
int cnt = pstmt.executeUpdate();
if(cnt==0) {
System.out.println("행 삭제 실패!");
} else {
System.out.println("행 삭제 성공!");
} // if end
pstmt.close();
con.close();
3. SQL문을 변수로 만들어서 작성하고 실행하기
반복적인 SQL문을 계속해서 작성하는 것도 틀렸다고 말할 순 없지만 변수를 이용하는 방법도 있다.
변수를 활용해서 테이블에 행을 추가해보자.
1) 변수 선언하기
먼저 변수를 선언해준다.
String name = "박지성";
int kor=99, eng=98, mat=100;
String addr = "Seoul";
2) SQL문 작성하기
이제 SQL문을 작성하는데 여기서 변수로 대입할 값은 ? 로 채워준다.
(여기서 잠깐!! "?" 나 '?'를 하면 안된다)
StringBuilder sql = new StringBuilder();
sql.append(" INSERT INTO sungjuk(sno, uname, kor, eng, mat, addr, wdate)");
sql.append(" VALUES (sungjuk_seq.nextval, ?, ?, ?, ?, ?, sysdate)");
3) SQL문 실행하기
이제 SQL문을 실행해보자.
우선 String으로 작성된 SQL문을 SQL문으로 변환시키는 작업을 먼저 해보자.
PreparedStatement pstmt = con.prepareStatement(sql.toString());
그리고 이제 우리가 불러온 DB에 SQL문을 실행시키는 데 여기서 과정이 좀 다르다.
이전처럼 .executeUpdate()를 사용하기 이전에 .set*() 메서드를 사용해서 ?와 변수를 일치시켜주려 한다.
여기서의 포인트는 ?의 개수, 순서, 자료형까지 모두 일치를 시켜야한다.
pstmt.setString(1, name); // 1 -> 첫번째 물음표
pstmt.setInt(2, kor);
pstmt.setInt(3, eng);
pstmt.setInt(4, mat);
pstmt.setString(5, addr);
int cnt = pstmt.executeUpdate();
if(cnt==0) {
System.out.println("행 추가 실패!");
} else {
System.out.println("행 추가 성공!");
}
이제 Run 해보자.
새로운 행이 잘 들어온 것을 확인할 수 있다.
'⁂ Java > : JDBC - Java DataBase Connectivity' 카테고리의 다른 글
[JAVA] JDBC #3-1 자바로 페이징하기 (0) | 2022.09.22 |
---|---|
[JAVA] JDBC #2-2 CRUD(Create, Read, Update, Delete) : R (1) | 2022.09.22 |
[JAVA] JDBC #1 - 환경 구축하기 (0) | 2022.09.21 |