커넥션은 해봤지..
이제 데이터를 받아와 뿌려보자..
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JdbcTest { public static void main(String[] args) { Connection cn = null; Statement st = null; ResultSet rs = null; //커넥션 개체로 접속 try { Class.forName("oracle.jdbc.OracleDriver"); cn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe", "oraclejava", "oraclejava"); st = cn.createStatement(); rs = st.executeQuery("select last_name, salary from employees "); System.out.println("\t[급여 명세표]"); System.out.println("=============================="); System.out.println("이름\t급여"); while(rs.next()){ System.out.print(rs.getString("last_name")+ "\t"); System.out.print(rs.getInt("salary")+ "\n"); } System.out.println("=============================="); } catch (Exception e) { e.printStackTrace(); } finally { //자원해지(반드시 만든 순서의 역순으로) if (rs != null) try { rs.close();} catch (SQLException e) {} if (st != null) try { st.close();} catch (SQLException e) {} if (cn != null) try { cn.close();} catch (SQLException e) {} } } }
CRUD(Create, Read, Update, Delete :삽입, 삭제, 수정, 조회)
- executeQuery : Select (데이터의 변경이 가해지지 않을 때)
- executeUpdate : Insert, Update, Delete (데이터의 변경이 가해질 때)
쿼리를 오라클에 던지면 오라클 옵티마이저가 쿼리를 해석 데이터를 넘겨줘.
받을때 ResultSet으로 받아.
Statement 인터페이스는 단점
- SQL쿼리를 가져오거나 실행을 할 때 변수를 줄 경우 문자열 자체가 조작될 수 있다..
이제 같은 프로그램을 jsp로 짜보자..
webdev\WebContent 밑에 jdbc폴더 만들고 jdbcTest.jsp 파일 만들어.
jsp에서 java코드를 작성할 때는 <%.. java code.. %> : 스크립트
jsp에서 import 마우스 대거나, ctrl-shift-o로 안돼.
미리 타이핑을 하거나.. 바로 뒤에서 ctrl+space눌러줘.
html의 주석 : <!-- --> 여기엔 중요한 정보를 보여주면 안돼.. 소스보기에서 보여..
jsp의 주석 : <%%>영역안에서 // /* */ /** */ or <%— %>
System.out.println 대신에 jsp 내장객체인 out.println만 쓰고
한줄내림 </br> 일일이 붙여줘야지..
<%@page import="java.sql.*" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% Connection cn = null; Statement st = null; ResultSet rs = null; try { Class.forName("oracle.jdbc.OracleDriver"); cn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "oraclejava", "oraclejava"); st = cn.createStatement(); rs = st.executeQuery("select last_name, salary from employees "); out.println("\t[급여명세표]<br/>"); out.println("===================<br/>"); out.println("이름\t급여"); while(rs.next()){ out.println(rs.getString("last_name")); out.println(rs.getString("salary")+"\n<br/>"); } out.println("===================<br/>"); } catch (Exception e) { e.printStackTrace(); } finally { if (cn != null) try { cn.close();} catch (SQLException e) { } if (st != null) try { st.close();} catch (SQLException e) { } if (rs != null) try { rs.close();} catch (SQLException e) { } } %> </body> </html>
이렇게 java코드를 jsp코드로 바꿔볼 수 있다.
간단한 테스트 하나 해보자..
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% String[] basketTeam = {"정대만", "서태웅", "채치수", "송태섭", "강백호"}; for (int i = 0; i <basketTeam.length; i++){ out.print(basketTeam[i]); if ( i != basketTeam.length-1) out.println(", "); } %><br/> <%-- expression (표현식으로 출력) --%> <% for(int i = 0; i <basketTeam.length; i++){ %> <%=basketTeam[i] %><%if ( i != basketTeam.length-1) {%>, <%} %> <% } %> <br/> <!-- while 사용하여 출력 --> <% int j = 0; while (j != basketTeam.length){ out.print(basketTeam[j]); if ( j != basketTeam.length-1) out.println(", "); j++; } %> </body> </html>
디버그
행번호 더블클릭 (Break Point) –> 마우스 오른쪽 버튼 Debug as –> Debug on Server
다음 Break Point로 이동 : F8
Variable에서 숫자 바꾸면 루프를 다 하나하나 돌 필요가 없어..
Breakpoints 에서 Remove all Breakpoints 혹은 Skip All Breakpoints 등 가능..