Class.forName()메소드는 생략할수 있지만 추후의 드라이버를 인지하지 못하는 에러가 발생할 수 있기 때문에 Driver을 명시하는 것을 권장함
Class.forName() 어떤 dbms에 연결할 건지 종류를 지시해주는 역활
(오라클?,mysql?,mariaDB? 중 어떤걸 연결할래? )
데이터 원본에 JDBC드라이버를 통하여 커넥션을 만드는 역할
DriverManager 클래스 안에 있는 getConnection()메소드를 통해
오라클에 있는 계정중 원하는 계정에 접근할 수 있도록한다!
getConnection() 메소드에 대한 반환값
내가 해당 계정안에 있는 객체를 (table, view, sequence 등) 조작할수 있는 권한을 가짐
Connection 안에있는 ①createStatement()메소드를 사용가능하다
(①메소드를 사용하여 Statement 를 얻을 수 있어!)
② prepareStatement()메소드를 사용할 수 있다.
(②메소드를 사용하여 PreparedStatement를 얻을 수 있어!)
0개 이상의 결과를 가져올수 있다.
DB에 SELECT 해달라는 명령문을 보냄 DB에서는 그 결과를 ResultSet 객체에 담아서 우리에게 반환
SELECT를 하고 나서의 객체 결과값
실제 자바에서 쓴 쿼리를 db에 전달해주는 역할을 한다(우체부 역할).
prepareStatement()도 db에 쿼리를 전달해 주는 역할을 함.
Statement vs PreparedStatement
(용도는 똑같지만 사용하는 시기와 방식이 다르다. 코드를 통해 확인)
① Class.forName("연결할 DBMS의 Driver")을 설정 함으로써 내가 사용하려는 DBMS를 선택한다
(오라클? Mysql? MSsql? MariaDB?)
② Connection conn = DriverManager.getConnection("계정정보","계정이름","계정 비밀번호");
(내가 원하는 DBMS와 연결을 할것이다. DBMS속 계정에 진입하는 역할)
③ String query = "쿼리명령어"
(내가 DBMS에 접근하여 원하는 결과 값을 얻기 위해 쿼리 작성하여 담는 역할)
statement stmt = conn.createStatement()는 우체부 역할
select 절 쓸꺼야? 그러면 executequery써야해 그러면 반환값은
resultset으로 돌아올꺼야!
insert, update , delete 문은 executeUpdate()문을 사용한다.
DML문 시용시 왜 INT로 반환?
( "1" 개의 행이 추가,삭제,업데이트 되었습니다. 오라클은 숫자로 반환해 줌)
resultset은 몇개를 돌지 모르니 while문을 사용함!!
while(rset.next()) 를 통해 행을 뽑아내기
다 뽑아냈으면 알아서 종료 next()