국비필기노트/jsp

jsp_DB에서 여러 데이터 가져오기

개발..너... 2022. 6. 8. 13:15
DB에서 서버 현재시간 가져오기

 

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
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%  Connection conn = null;
        String driver = "oracle.jdbc.driver.OracleDriver" 
        String url = "jdbc:oracle:thin:@localhost:1521:xe";
        String user = "wjsp";         
        String password = "wjsp";  
        
        Class.forName(driver);
        System.out.println("jdbc driver 로딩성공!");    
        
        conn = DriverManager.getConnection(url, user, password);
        System.out.println(" 오라클 연결 성공!");    
        
        String sql = "SELECT SYSDATE FROM dual";
        PreparedStatement pstm = conn.prepareStatement(sql);
        
        //executeQuery : 쿼리문 수행
        ResultSet rs = pstm.executeQuery();
        
        if(rs.next()){
            out.print(rs.getDate(1));
        }
        
        //close는 반납의 개념
        rs.close();
        pstm.close();
        conn.close();
        
        %> 
</body>
</html>
cs

 

~24행: 오라클과 DB연결

26~27행: SQL문에서 select문 String 타입으로 받아오고 preparedStatement를 사용하여 이를 pstm 으로 넣기

30행~34행: 데이터의 유무 조회

 

rs.next() 

 

select 받은 결과값을 하나의 테이블이라고 볼 때 select 테이블에 어떤 데이터가 있을지 모른다.

즉, 아무데이터가 없어 조회가 안되는 경우가 있을 수 있고 무수히 많은 데이터가 담겨져 올 수 있는데 이를 확인해주는 것이 rs.next()이다. 

 

 

rs.next()는 위의 그림과 같이 첫번째 라인부터 시작하는데 true는 데이터가 존재한다는 뜻이며 false가 나올 때 까지 반복한다. 지금은 예제라 데이터가 1개뿐이라 일반 코드로 진행하였지만 데이터가 많아지면 반복문으로 실행한다.

 

 

DB에서 데이터 여러개를 동시에 가져오기

 

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
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%  Connection conn = null;
        String driver = "oracle.jdbc.driver.OracleDriver";  
        String url = "jdbc:oracle:thin:@localhost:1521:xe";
        String user = "wjsp";          
        String password = "wjsp";      
        
        Class.forName(driver);
        System.out.println("jdbc driver 로딩성공!");    
        
        conn = DriverManager.getConnection(url, user, password);
        System.out.println(" 오라클 연결 성공!");    
        
        
        String sql = "SELECT * FROM CAR c";
        PreparedStatement pstm = conn.prepareStatement(sql);
        ResultSet rs = pstm.executeQuery();
        
        while(rs.next()){
            out.print("차번호" + rs.getString(1+ "<br>");
            out.print("브랜드" + rs.getString("BRAND"+ "<br>");
            out.print("색상" + rs.getString(3+ "<br>");
            out.print("가격" + rs.getInt("PRICE"+ "<br>");
            }
        //close는 반납의 개념
        rs.close();
        pstm.close();
        conn.close();
        
        %> 
</body>
</html>
cs

 

27~29행: rs.next()를 위한 기본 세팅

31행~: rs.next()

 

여러개를 가지고올 땐 while문을 사용하여 진행하며 가져올 데이터베이스 컬럼 넘버를 입력하던지(rs.getString(1)) 데이터베이스의 select한 컬럼 이름을 가지고오던지(rs.getString("BRAND")하여 가져올 컬럼을 정확히 입력해준다.

 

 

DB에서 특정 컬럼만 가져오기

 

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
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        Connection conn = null;
        String driver = "oracle.jdbc.driver.OracleDriver"
        String url = "jdbc:oracle:thin:@localhost:1521:xe"
        String user = "wjsp"
        String password = "wjsp";
 
        Class.forName(driver);
        System.out.println("jdbc driver 로딩성공!");
 
        conn = DriverManager.getConnection(url, user, password);
        System.out.println(" 오라클 연결 성공!");
 
        String sql = "SELECT * FROM CAR c";
        PreparedStatement pstm = conn.prepareStatement(sql);
        ResultSet rs = pstm.executeQuery();
 
 
        String carnum = "3";
        //         sql = "SELECT * FROM car WHERE carnum = '" + carnum + "'";
        sql = "SELECT color FROM car WHERE carnum = ? ";
        pstm = conn.prepareStatement(sql);
        
        pstm.setString(1,carnum);
        rs = pstm.executeQuery();
        
        if(rs.next()){
            out.print("색상:" + rs.getString(1));
        }
 
        //close는 반납의 개념
        rs.close();
        pstm.close();
        conn.close();
    %>
</body>
</html>
cs

 

~25행: 오라클과 DB연결 완료

~29행: rs.next()를 위한 기본 세팅

32행: 가지고 올 컬럼 숫자를 carnum에 저장

34행: 데이터베이스 select문 sql에 저장(33행처럼 sql문 입력도 가능하나 잘 사용하지 않는 방법이다.)

37행: pstm.setString(파라미터순서, 저장한컬럼) 입력

40행: rs.next로 콘솔 출력