오라클에 대하여 배우고 나서, 이제는 자바를 통해서 SQL 문을 실행하는 법에 대해서 배우기 시작했다. 그렇다면, 코드를 보면서 어떤 식으로 SQL 문을 실행할 수 있는 지에 대해 설명해보도록 하겠다. 주석을 잘 참고하기를 바란다. 그렇다면, 제일 간단한 INSERT 문을 먼저 실행해보려고 한다.
// Main 메소드 안의 내용이라고 가정한다.
// 자바를 통해서 SQL 문을 실행 시켜주기 위해서는 우선, 두가지를 초기화를 해줘야 한다.
Connection conn = null ; // Connection conn 은 데이터베이스 서버와 연결을 맺어주는 자바의 객체
PreparedStatement pstmt = null ; // PreparedStatement 는 연결한 DB 서버에 전송할
// SQL문 (편지)을 전송(전달) 해주는 객체(배달부)이다.
// 그 다음으로 진행해야하는 것은 >>오라클 드라이버 로딩<< 이다.
// 오라클 드라이버의 역할은 다음 3가지이다.
// 1. OrcaleDriver 를 메모리에 로딩시켜준다.
// 2. OracleDriver 객체를 생성해준다.
// 3. OracleDriver 객체를 DriverManager에 등록시켜준다.
try{
Class.forName("oracle.jdbc.driver.OracleDriver") ;
// ClassNotFoundException 을 발생시킬수도 있기때문에, try, catch로 묶어줘야한다.
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","JDBC_USER","gclass");
// getConnection 뒤의 들어갈 값에 대해서 어떤 값이 들어가는 지 알아보면 다음과 같다.
// ("jdbc:oracle:thin:@연결할IP주소:1521:xe","Oracle아이디","Oracle비번");
//
String sql = " insert into tbl_memo ( no , name , msg ) "
+ " values( 1 , '개발할결심' , 'SQL연결하기' ) ";
// SQL문을 작성하면서 조심해야할 것은 쌍따옴표 맨앞과 맨뒤에 스페이스 바를 넣어주는 것이
// 오류를 발생시킬 가능성이 적다. 만약에 붙게된다면, 예컨대, msg)value 를 한 단어로
// 인식할 가능성이 존재한다.
pstmt = conn.prepareStatement(sql) ;
// 연결한 오라클서버(conn)에 SQL문을 전달할 객체 PrepareStatement 객체 생성하기
int n = pstmt.executeUpdate() ; // .executeUpdate()는 int를 리턴시킨다.
// PreparedStatement 객체는 작성된 SQL문을 오라클 서버에 보내서 실행이 되도록 해야한다.
}catch(ClassNotFoundException e) {
System.out.println(">>> ojdbc8.jar 파일이 없습니다. <<<");
}catch(SQLException e) { -- getConnection 에서 SQLException 이 발생할 가능성이 존재
// 해당 Exception은 SQL문이 잘못 되었을 경우 발생한다.
e.printStackTrace();
}finally { // 사용하였던 자원을 반납하기
// 반납의 순서는 생성순서의 역순으로 한다.
pstmt.close();
conn.close();
}
위의 자바문을 실행하면, 위에서 정의한 SQL문처럼 TBL_MEMO 라는 테이블에 위에서 입력한 값들이 INSERT 된다. 이와 같은 방법으로 , 우리는 자바와 오라클을 연결하여, 사용할 수 있다. 예컨대, 데이터베이스에 저장되어 있는 테이블에서 값을 꺼내와서 CONSOLE에 뽑을 수 있다. 다음 내용은 어떻게 SELECT 하여 값을 가져올 수 있는 지 살펴보도록 하겠다. 그전에, 위에서는 INSERT 문을 실행하기 위해서 .executeUpdate( ) 를 사용하였지만, 모든 경우에 이를 사용하는 것은 아니다. .excuteUpdate( ) ; 은 SQL 문이 DML문 ( INSERT , UPDATE , DELETE , MERGE ) 이거나 SQL문이 DDL문 ( CREATE , DROP ,ALTER , TRUNCATE ) 인 경우에 사용된다. .executeUpdate( ) ; 은 위에 주석문에 적어둔 것처럼 , .executeUpdate 는 int를 리턴해주는 이 때 return 되어지는 값은 적용되어진 행의 개수를 리턴시켜주는 것이다. 예를 들어, 위에서 처럼 한 행을 INSERT 했다면 리턴값은 1이 된다. . executeQuery( ) ; 은 SQL문이 DQL( select ) 일 경우에 사용된다.
''국비지원'의 시작' 카테고리의 다른 글
HTML & CSS 비긴즈 02 ( CSS 의 우선순위 ) (0) | 2023.03.08 |
---|---|
HTML,CSS 비긴즈 01 ( INLINE 요소 , BLOCK 요소 ) (0) | 2023.03.02 |
오라클 비긴즈 11 ( 정규화 과정 ) (0) | 2023.02.21 |
오라클 비긴즈 10 ( INDEX ) (0) | 2023.02.20 |
오라클 비긴즈 09 ( PL/SQL 문과 사용자 정의 함수( Function ) ) (0) | 2023.02.16 |