YJ의 새벽

SQL응용 JDBC (인덱스),throws 본문

SelfStudy/Oracle (SQL)

SQL응용 JDBC (인덱스),throws

YJDawn 2023. 1. 25. 21:33
  • 인덱스 (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