JDBC - DQL_SELECT

kxsxh·2024년 3월 7일
0

JDBC

목록 보기
2/3

ResultSet rs = null : ResultSet rs은 select 되어진 결과물이 저장되는 곳

String sql =  "  select no, name, msg, to_char(writeday, 'yyyy-mm-dd hh24:mi:ss') AS writeday "
					+ " from tbl_memo"
					+ " order by no desc ";

1. 오라클 드라이버 로딩

OracleDriver(오라클 드라이버)의 역할

1). OracleDriver 를 메모리에 로딩시켜준다.
2). OracleDriver 객체를 생성해준다.
3). OracleDriver 객체를 DriverManager에 등록시켜준다.
--> DriverManager 는 여러 드라이버들을 Vector 에 저장하여 관리해주는 클래스이다.

Class.forName("oracle.jdbc.driver.OracleDriver");

class.forName("로드할 클래스이름")
-> class의 static 메소드인 forName은 클래스의 이름을 매개변수로 받아서 Class 객체를 리턴해준다
--> 용도는 컴파일 타임에 직접적인 참조 없이 런타임에 동적으로 클래스를 로드하기 위함

2. 어떤 오라클 서버에 연결을 할래?

System.out.print("> 연결할 오라클 서버의 IP 주소 : ");
			String ip = sc.nextLine(); 
          
conn = DriverManager.getConnection("jdbc:oracle:thin:@"+ip+":1521:xe", "JDBC_USER", "gclass"); 

--> 본인 ip 주소


3. SQL 문(편지)을 작성한다

	String sql =  "  select no, name, msg, to_char(writeday, 'yyyy-mm-dd hh24:mi:ss') AS writeday "
					+ " from tbl_memo"
					+ " order by no desc ";
  • <⭐> 공백을 주지 않으면 SQL ORACLE에서 오류가 남
    좌우에 공백을 줘야한다
  • SQL문을 작성할 때 1줄마다 앞, 뒤로 공백을 꼭 주도록 한다
  • SQL문 뒤에 ;을 넣으면 오류

4. 연결한 오라클서버(conn)에 SQL문(편지)을 전달할 객체 PreparedStatement 객체(우편배달부) 생성하기

pstmt = conn.prepareStatement(sql);
  • pstmt = conn.prepareStatement(sql); 이렇게 꼭 해줘야 함

5. PreparedStatement 객체(우편배달부)는 작성된 SQL문(편지) 오라클 서버에 보내서 실행이 되도록 해야 한다.

rs = pstmt.executeQuery();
--> sql문이 DQL(SELECT)이므로 .executeQuery();을 사용해야 한다

		System.out.println("-".repeat(70));
		System.out.println("글번호\t글쓴이\t글내용\t작성일자");
		System.out.println("-".repeat(70));

인터페이스 ResultSet 의 주요한 메소드

  1. next() : select 되어진 결과물에서 커서를 다음으로 옮겨주는 것
    (리턴타입은 boolean)
  2. first() : select 되어진 결과물에서 커서를 가장 처음으로 옮겨주는 것
    (리턴타입은 boolean)
  3. last() : select 되어진 결과물에서 커서를 가장 마지막으로 옮겨주는 것
    (리턴타입은 boolean)

커서가 위치한 행에서 컬럼의 값을 읽어들이는 메소드

getInt(숫자) : 컬럼의 타입이 숫자이면서 정수로 읽어 들일 때 파라미터 숫자는 컬럼의 위치값

getInt(문자) : 컬럼의 타입이 숫자이면서 정수로 읽어 들일 때 파라미터 문자는 컬럼명 또는 alias명

getLong(숫자) : 컬럼의 타입이 숫자이면서 정수로 읽어 들일 때 파라미터 숫자는 컬럼의 위치값

getLong(문자) : 컬럼의 타입이 숫자이면서 정수로 읽어 들일 때 파라미터 문자는 컬럼명 또는 alias명

getFloat(숫자) : 컬럼의 타입이 숫자이면서 실수로 읽어 들일 때 파라미터 숫자는 컬럼의 위치값

getFloat(문자) : 컬럼의 타입이 숫자이면서 실수로 읽어 들일 때 파라미터 문자는 컬럼명 또는 alias명

getDouble(숫자) : 컬럼의 타입이 숫자이면서 실수로 읽어 들일 때 파라미터 숫자는 컬럼의 위치값

getDouble(문자) : 컬럼의 타입이 숫자이면서 실수로 읽어 들일 때 파라미터 문자는 컬럼명 또는 alias명

getString(숫자) : 컬럼의 타입이 문자열로 읽어 들일 때 파라미터 숫자는 컬럼의 위치값

getString(문자) : 컬럼의 타입이 문자열로 읽어 들일 때 파라미터 문자는 컬럼명 또는 alias명


StringBuilder sb = new StringBuilder();

	while (rs.next()) {

rs.next() : select 되어진 결과물에서 위치(행의 위치)를 다음으로 옮긴 후 행이 존재하면 true로 리턴해주고, 행이 없으면 false를 리턴해주는 메소드이다

int no = rs.getInt("no");

✔️ 칼럼명은 no를 쓰고, 대소문자 구분 x
✔️ 또는 int no = rs.getInt("NO") --> "NO"은 SELECT 해온 컬럼명이다
✔️ 또는 int no = rs.getInt(1) --> 1은 select 해 온 컬럼의 위치값으로써 1번째 컬럼을 가리키는 것이다

0개의 댓글