KH정보교육원_웹 프로그래머 과정/Oracle DB
Database 기본11_JDBC
calvin9150
2021. 3. 19. 19:51
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | import java.sql.Date; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class BasicJDBC { public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet rs = null; //DB 접속하기 //Class.forName() 메서드를 이용하여 driver 등록 -> 클래스 등록 // oracle : oracle.jdbc.driver.OracleDriver try { Class.forName("oracle.jdbc.driver.OracleDriver"); System.out.println("드라이버 등록 성공"); // 2.DB연결을 위한 Connection 객체 생성 // DriverManager 객체의 getConnection() 메서드 이용하여 생성 // getConnection()메서드는 3개의 문자열 매개변수 있음. // 1. DB url address -> "jdbc:oracle:thin:@DB서버ip:포트:DB의sid" // ex)"jdbc:oracle:thin:@localhost:1521:xe" // 2. 사용자 계정 -> DB에 생성된 계정명을 문자열로 작성 -> ex)"student" // 3. 계정 비밀번호 -> DB에 접속할 비밀번호를 문자열로 작성 -> ex)"student" conn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:xe", "student", "student");// interface java.sql 임포트 System.out.println("DB 접속 성공"); // 3. SQL문을 실행할 객체 생성 -> Statement 객체 stmt = conn.createStatement(); // 4. 실행할 쿼리문 생성 -> 문자열로 생성 // String sql = "SELECT * FROM 테이블명" String sql = "SELECT * FROM MEMBER"; // 5. 작성한 쿼리문 실행 -> Statment 객체의 executeQuery()||executeUpdate() // executeQuery(실행할 select문) -> ResultSet 반환 // executeUpdate(insert,update,delete문) -> int 반환 rs = stmt.executeQuery(sql); // 6. DB에서 가져온 데이터 확인 -> data를 java에 보관하기 // ResultSet객체의 next() 메서드 이용해서 row지정 // ㄴ 지정할 row 없으면 false, 있으면 true 반환. // 다수의 값(row여럿)이면 while문 // 한개면 if문 사용해서 접근 -> ex) primary key 조회를 예상하고 사용 // ResultSet 객체의 get메서드를 미용 -> type별로 있음.. 오라클과 자바 타입을 맞춰준다. // getString(컬럼명||인덱스명) -> varchar2, char, nvarchar2, nchar // getInt(컬럼명||인덱스명), getDouble(컬럼명||인덱스명) -> number // getDate(컬럼명||인덱스명) -> date // java.sql.Date while(rs.next()) { String memberId = rs.getString("member_id"); String memberPwd = rs.getString("member_pwd"); String memberName = rs.getString("member_name"); String gender = rs.getString("gender"); int age = rs.getInt("age"); Date enrollDate = rs.getDate("enroll_date"); System.out.println(memberId+" "+memberPwd+" "+memberName+" "+gender+" "+age+" "+enrollDate); } // insert문 실행 // insert into 테이블명 values(값,값....); sql = "INSERT INTO MEMBER VALUES('GOM','GOM','곰탱이','M',29," + "'GOM@NAVER.COM','01012412211','서울시 송파구','독서',SYSDATE)"; int result = stmt.executeUpdate(sql); System.out.println(result>0?"입력성공":"입력실패"); // 7. 생성된 객체 반환(ResultSet, Statement, Connection) // 생성된 역순으로 반환해야한다. close() 메서드 이용. } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if(rs!=null&&rs.isClosed())rs.close(); if(stmt!=null&&stmt.isClosed())stmt.close(); if(conn!=null&&conn.isClosed())conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } | cs |