본문 바로가기

IT/국비과정

Java 국비과정 : Java 데이터베이스 연동

반응형

1. 윈도우 검색 창에서 sql입력 후 Run SQL Command Line을 실행한다.

 

2. SQL> conn system/oracle을 입력하여 관리자 모드로 접속한다.

 

3.  아이디 : java 비번 : 1234로 새로운 사용자를 만든다.

 

4. 다음과 같은 명령어를 입력하여 새로 만든 계정 'java'에게 데이터베이스에 대한 모든 권한을 준다

5. java 계정으로 sql접속 가능한지 확인

6. sqldeveloper를 실행한 후 '새로만들기'를 선택하여 새로 만든 'java'계정의 접속이름(별칭), 이름, 비번을 입력 후

테스트 -> 저장을 누른다.

 

7. 접속이 성공되면 다음과 같이 오른쪽에 새로운 워크시트 창이 생성된다.

 

 

8. 테이블 생성 쿼리문을 작성하여 테이블을 생성한다.

9. 테이블로 들어가 데이터 탭으로 들어가면 현재 내가 만든 테이블에 저장되어 있는 데이터들을 확인할 있다.

 

10. insert 쿼리문으로 임의의 데이터 3개를 넣어본다.

11. 이클립스와 연동하기 위해 새로운 프로젝트를 생성한다.

자바가 외부 프로그램(DB) 접근하려면 프로그램에 대한 기능을 알고 있어야 한다.

 

Class.forName()을 호출하면 Driver 가 자기자신을 초기화하여 DriverManager에 등록을 한다. 즉 개발자가 따로 관리하지 않는 static 객체들이 알아서 DriverManager에 등록이 되는 것이다.

 

하지만 이대로 실행을 하면 다음과 같은 오류가 뜬다.

그 이유는 바로 작업 프로젝트에 odbc 설정을 해주지 않아서 인데 

프로젝트에서 우클릭 -> properties -> Java Build Path -> Libraries -> Add External jar를 눌러서 해당 jdk버전에 맞는 ojdbc를 불러온다.

 

설정 Main클래스를 실행해보면 오류가 뜨지 않은 것을 확인할 있다.(Database기능을 이제 활용할 있다.)

 

12. 자바 프로그램과 DB연결하기.

 

연결이 이루어졌다면 연결객체가 생성되었으니 전송 객체를 생성해서 CRUD 쿼리문을 보낼 있어야 한다.

 

결과 값이 자바 프로그램으로 날아오면 결과값을 받아줄 자바 객체가 필요하다결과값의 자료형은 무엇일까??

 

리턴 값이 ResultSet임을 있다. 따라서 자료형이 ResultSet 참조변수 rs 선언한다.

 

ResultSet 객체 구조는 bof와 eof를 가지고 있는 Iterator 구조와 흡사하다. 그래서 ResultSet Iterator 같이 데이터를 꺼내는 메소드를 가지고 있다.

 

ResultSet 클래스의 next() 메소드 이용해 데이터를 하나씩 꺼낸다.

next() : ResultSet 데이터 구조에서 다음 칸으로 이동하여 값이 존재한다면 true를 반환하고 없다면 false 반환하는 메소드

getXXX : 해당 항목 XXX 자료형에 맞는 데이터를 반환하는 메소드

 

 

13. main 클래스에 해당 메소드를 실행시키는 코드를 작성한 실행 결과 확인

 

결과

 

14. 자바에서 DB 데이터를 삽입하는 메소드를 만들기

15. Main 클래스에서 insertUser() 메소드 실행 코드 작성

 

결과 확인

sqldeveloper에서도 확인

통상 executeQuery() 데이터를 얻어오는데 사용하는 메소드이다. 그런데 insertQuery() DB 데이터만 넣어주고 굳이 값을 가져올 필요가 없기 때문에 executeQuery()보다는 executeUpdate() 메소드를 사용한다.

executeUpdate() 리턴값은 int형으로써 성공적으로 DB에 입력됐다면 1 반환한다. 실패하면 에러가 발생하므로 그에 대한 예외처리를 해주어야 한다.

 

값을 토대로 데이터 입력의 정상여부를 확인한다쿼리문을 잘못 작성하는 셋팅하는 과정에서 실수를 했을 오류를 보고 파악하려면?

 

예시로 DBConnect.java 파일의 60번째 코드 id의 d를 빼고 실행해보았다.

 

오류 메세지의 아래부분에 해당 java 파일 어느 위치에서 실수가 있었는지 확인 할 수 있다.

 

16. updateUser(), deleteUser() 작성

updateUser() 기능을 insert 같기 때문에 insert메소드의 내용을 가져온다.

 

17. 메인 클래스에 updateUser(), deleteUser() 코드를 추가한 후 수정 삭제를 해보기

 

결과

 

반응형