학원/JDBC

10/24 27-4 (insertSQLAutoGeneratedKeys)

도원결의 2022. 10. 24. 18:14

입력한 행의 자동 생성된 키 값(일련번호) 가져오기! 

시퀀스 가져오는거

이거 어디다가 씀?? 

게시판 글 작성 후 작성한 글로 이동(글 보려고)하기 위해선 내가 작성한 글 번호를 알아야 함

그 번호를 알아내기 위한 키 값 알아내기 !!

 

 

// 이거 부모클래스 만들기 전에 했나보네.... 걍 복습 겸 다시 정리 해 !!
public class insertSQLAutoGeneratedKeys {
		//멤버변수
		private Connection conn;
		private Statement stmt;
		
		//생성자
		public insertSQLAutoGeneratedKeys() {
		  try {
			Class.forName("oracle.jdbc.OracleDriver");  // 오라클 드라이버 로딩
			conn= DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1", "KOSMO","KOSMO"); // 연결시도
		  } 
          catch (ClassNotFoundException e) {
			 System.out.println("드라이버 클래스가 없어요, 드라이버 로딩 실패...");
		  } 
          catch (SQLException e) {
			 System.out.println("데이터베이스 연결 실패");
		   }
		}///////

		private void execute() { 
			try {				
				stmt = conn.createStatement();	 // 쿼리 실행 객체생성
				/* Statement계열 객체로 쿼리 실행				
				  쿼리문이 DELETE/UPDATE/INSERT일때는 int executeUpdate() 
				  쿼리문이 SELECT일때는 ResultSet executeQuery() 호출 */					
				String sql = "INSERT INTO bbs VALUES(SEQ_BBS.NEXTVAL,'제목6','PARK',sysdate)";
				try {
					  //반환값은 영향받은 행의 수 내용같음! 
			//	    int affected = stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);// my-sql,MSQL용, 오라클은 안됨
			//		int affected = stmt.executeUpdate(sql,new int[] {1});   // 이게 오라클용
					int affected = stmt.executeUpdate(sql,new String[] {NO"}); // 오라클은 이렇게 해도 됨
					   //자동 생성된 키(숫자=pk) 값 얻기
					ResultSet rs = stmt.getGeneratedKeys();
					if(rs.next()) {
						System.out.println("입력된 행의 자동생성된 키값:"+rs.getInt(1));  // 이거 인자는 무조건 1!!! PK값 얻는거라서 걍 무조건 1 씀!						
					  }
					System.out.println(affected + "행이 입력되었어요");
				}
				catch(SQLException e) {
					  System.out.println("INSERT쿼리문 실행 오류:"+e.getMessage());
				    }
		  }			
		   catch(SQLException e) {
				System.out.println("statement 객체 생성 실패");
			}
			finally {
				close();				
			   }					
		}////////////
			
	private void close() {
		try {
             if (stmt != null) stmt.close();
             if (conn != null) conn.close();
		 }
	    catch(SQLException e) {}			
		}

	public static void main(String[] args) {
		new insertSQLAutoGeneratedKeys().execute();
				
	}/////	
}/////

이거 지금 MEMBER랑 연결 되어 있어서 부모KEY랑 연동되어 있는 것만 입력 가능함!

실행한 결과
BBS 테이블 확인!