YJ의 새벽
SQL응용 JDBC (인덱스),throws 본문
- 인덱스 (DDL)
-- 읽기 용도의 테이블
-- 한 테이블에 여러개의 인덱스 지정이 가능
--인덱스 조회
SELECT * FROM USER_INDEXES WHERE TABLE_NAME = '테이블명';
--테이블 단위의 정보를 관리
SELECT * FROM ALL_IND_COLUMNS WHERE TABLE_NAME = '테이블명';
SELECT TABLE_NAME,INDEX_NAME,COLUMN_NAME FROM ALL_IND_COLUMNS
WHERE TABLE_NAME = '테이블명';
--컬럼 단위의 정보를 관리
-- 인덱스 삭제 ( 수정이 없다, 삭제후 다시만들어야한다. )
DROP INDEX 인덱스명;
-- 인덱스 생성
CREATE INDEX 인덱스명 ON 테이블명(컬럼명) ;
--IND_NAME , IDX_NAME
**JDBC 응용
--연습할 TESTIDXEMP3 테이블 생성
CREATE TABLE TESTIDXEMP3 AS SELECT EMPNO FROM EMP_TBL;
public class TestJDBC {
//CREATE INDEX myidx1006 ON TESTIDXEMP3(empno) SQL 문 실행하는 메소드
public void crIdx(Connection pcon) {
String sql="CREATE INDEX myidx1006 ON TESTIDXEMP3(empno)";
Statement s = null;
try {
s = pcon.createStatement();
s.execute(sql);
}catch(SQLException e) {
e.printStackTrace();
}
}
- throw : 억지로 에러를 발생시키고자 할 때 사용되거나, 현재 메소드의 에러는 처리한 후
상위 메소드에 에러 정보를 줌으로써 상위메소드에서도 에러가 발생한것을 감지. - throws : 현재 메소드에서 자신을 호출한 상위 메소드로 Exception을 발생 , 즉, 예외를 자신이 처리하지않고, 자신을 호출한 메소드에게 책임 전가.
--예외가 발생 가능한 코드에 대해 try~catch~finally 로 예외처리하는것이 기본적인 방법.
( catch ) 블럭내부에 예외가 발생한 경우에 실행할 명령어를 작성
-- throws 로 예외를 던지는 방법또한 가능.
( 특정 예외가 발생한 경우에 실행할 명령어를 작성하지 않음 )
- 핵심 : 메소드의 실행순서 : main() 메소드에서 시작해서 호출한 메소드로 이동.
**throws 예약어 사용이유
-- throws를 메소드 선언부에 명시해주어서 예외가 발생가능한 코드가 있다는것을 알려주고
예외처리를 강제(유도) 하여준다.
-- 여러 발생 가능한 예외를 특정 메소드에서 한번에 처리하여 관리가 용이.
-> 예외가 발생했을때 실행할 코드의 작성과 관리가 용이.
-> 재사용 : 여러 다른메소드에서 함께 사용.
-- 예외를 넘겨받은 메소드는 try~catch 문을 이용하여 예외를 처리하여야만 함.
//CREATE INDEX myidx1006 ON TESTIDXEMP3(empno) SQL 문 실행하는 메소드
public void crIdx(Connection pcon) throws SQLException {
String sql="CREATE INDEX myidx1006 ON TESTIDXEMP3(empno)";
Statement s = null;
// try {
s = pcon.createStatement();
s.execute(sql);
// }catch(SQLException e) {
// e.printStackTrace();
// }
}
// crIdx (Connection ) 메소드 호출
// --throws 로 받았기때문에 try~catch로 묶어줘야함.
public static void main(String[] args) {
Connection con = null;
Statement st = null;
ResultSet rs = null;
TestJDBC test = new TestJDBC();
try {
java.lang.Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("오라클 데이터베이스 연결 , 드라이버객체 생성");
con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "user1", "1234");
System.out.println("오라클 DBMS에 연결되었습니다");
// crIdx (Connection ) 메소드 호출
// --throws 로 받았기때문에 try~catch로 묶어줘야함.
try {
test.crIdx(con);
System.out.println("crIdx()메소드 정상실행");
}catch(SQLException e) {
System.out.println("crIdx()메소드 오류발생");
e.printStackTrace();
}
} catch (java.lang.ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(con !=null) con.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}
'SelfStudy > Oracle (SQL)' 카테고리의 다른 글
SQL응용 JDBC (뷰) (0) | 2023.01.26 |
---|---|
SQL응용 JDBC (SELECT, INSERT, UPDATE) (2) | 2023.01.26 |
SQL응용 JDBC (시퀀스 수정,확인) (0) | 2023.01.25 |
SQL응용 JDBC (PreparedStatement) (0) | 2023.01.25 |
PL/SQL 트리거(Trigger) (0) | 2023.01.20 |
Comments