2) 명령프롬프트 cmd를 켜서 접속
> sqlplus system/1234
3) 성적테이블 개수 확인하기
> select count(*) as cnt from sungjuk;
→ 12개
- 작성 순서 반대로 자원반납을 해줘야한다.
(상자안에 물건을 쌓아넣고 뺄때는 반대로 위에서부터 빼줘야하는 것 처럼~)
if(rs.next())
: cursor가 있는지? 물어보는 조건문next()
: set linesize 1000;
col name for a10; --col 칼럼명 for 20자
col addr for a10; --col 칼럼명 for 20자
sql.append(" SELECT sno, uname, kor, eng, mat, tot, aver, addr, wdate ");
- select * 은 칼럼명이 전에 모두 노출이 되었을 때 사용해야한다.
- 그게 아니라면 칼럼명 모두 작성해줘야한다.
- int sno=23; 이 int sno=40; 이면 자료없음으로 출력된다. 왜냐면 내가 23까지만 데이터를 가지고있기 때문
2가지 방법
칼럼순서
접근 - getInt(int) / getString(int)칼럼명
접근 - getInt("칼럼명") / getString("칼럼명")
- 똑같이 출력되는 것을 확인할 수 있다.
- 이 내용을 자바에서 가져올 것이다.
- 상세보기(한 행 출력한 것)를 반복문 안에 넣으면 목록(전체 행 출력)이 된다.
- resultSet의 특징 : 제일 위에있는 목록을 가져온 후 그다음 줄을 가져온다. 또 그 다음줄을 가져오게 된다. next, next 하고 마지막줄까지 가면 다음줄(next)의 값은 없으므로 0이 반환된다.
- 저 부분은 기계적으로 항상 작성해야하는 부분인데 RowMapper이나 Mybatis Framework같은 프로그램으로 한 번에 불러올 수 있는 기능이 있다.
- 이 부분들은 항상 똑같은 패턴이므로 클래스를 생성하면 된다. DBOpen,
(단, 소수점은 반올림해서 둘째자리값까지 표현)
- 주소 변수에 Seoul 값을 먼저 저장해 준다.
- 위에 sql문 작성했던 것과 똑같이 대소문자만 구분해서 붙여넣어준다.
- 두가지 방법으로 모두 접근해본다 (연습)
package jdbc0922;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Test05_selectLike {
public static void main(String[] args) {
// Like 연산자 연습
//문제) 이름에 '나' 문자 있는 행을 조회하시오
String col="uname"; //검색칼럼 keyfield
String word="나"; //검색어 keyword
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
String url ="jdbc:oracle:thin:@localhost:1521:xe";
String user ="system";
String password="1234";
String driver ="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
con =DriverManager.getConnection(url, user, password);
System.out.println("오라클 DB 서버 연결 성공!!");
StringBuilder sql=new StringBuilder();
sql.append(" SELECT sno, uname, kor, eng, mat, tot, aver, addr, wdate ");
sql.append(" FROM sungjuk ");
// 검색어가 존재하는지?
if(word.length()>0) {//검색어에 개수가 있는지? 검색어를 입력했는지? 0은 입력 안한 것.
//where uname like '%나%'
String where=" WHERE " + col + " LIKE '%" + word + "%' ";
sql.append(where);
}//if end
sql.append(" ORDER BY sno DESC ");
//System.out.println(sql.toString());
pstmt=con.prepareStatement(sql.toString()); // con(결과값) sql문을 실행시켜주는 명령어.
rs=pstmt.executeQuery(); // ResultSet을 실행시켜주는 명령어.
if(rs.next()) {
System.out.println("자료있음 @@");
do {
System.out.println(rs.getInt("sno") + " ");
System.out.println(rs.getString("uname") + " ");
System.out.println(rs.getInt("kor") + " ");
System.out.println(rs.getInt("eng") + " ");
System.out.println(rs.getInt("mat") + " ");
System.out.println(rs.getInt("tot") + " ");
System.out.println(rs.getInt("aver") + " ");
System.out.println(rs.getString("addr") + " ");
System.out.println(rs.getString("wdate") + " ");
System.out.println();
}while(rs.next()); //다음 cursor가 있는지?
}else {
System.out.println("자료없음 @@");
}//if end
} catch (Exception e) {
System.out.println("실패" + e);
}finally{ //자원반납 (순서주의)
try {
if (rs!=null) {rs.close();}
} catch (Exception e) {}
try {
if (pstmt!=null) {pstmt.close();}
} catch (Exception e) {}
try {
if (con!=null) {con.close();}
} catch (Exception e) {}
}//end
System.out.println("END");
} // main() end
} // class end
package jdbc0922;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Test06_quiz {
public static void main(String[] args) {
// 문제) 학번 g1001이 수강신청한 과목을 과목코드별로 조회하시오
/*
g1001 d001 HTML
g1001 p001 JAVA
g1001 p002 Oracle
g1001 p003 JSP
g1001 p004 Python
g1001 p005 AJAX
*/
String hakno="g1001";
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
String url ="jdbc:oracle:thin:@localhost:1521:xe";
String user ="system";
String password="1234";
String driver ="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
con =DriverManager.getConnection(url, user, password);
System.out.println("오라클 DB 서버 연결 성공!!");
StringBuilder sql=new StringBuilder();
sql.append(" SELECT SU.hakno, SU.gcode, GW.gname ");
sql.append(" FROM tb_sugang SU join tb_gwamok GW ");
sql.append(" ON SU.gcode=GW.gcode ");
sql.append(" WHERE SU.hakno=? ");
sql.append(" ORDER BY SU.gcode ");
pstmt=con.prepareStatement(sql.toString()); // con(결과값) sql문을 실행시켜주는 명령어.
pstmt.setString(1, hakno);
rs=pstmt.executeQuery();
if(rs.next()) {
System.out.println("자료있음 @@");
do {
System.out.println(rs.getString("hakno") + " ");
System.out.println(rs.getString("gcode") + " ");
System.out.println(rs.getString("gname") + " ");
System.out.println();
}while(rs.next()); //다음 cursor가 있는지?
}else {
System.out.println("자료없음 @@");
}//if end
} catch (Exception e) {
System.out.println("실패" + e);
}finally{ //자원반납 (순서주의)
try {
if (rs!=null) {rs.close();}
} catch (Exception e) {}
try {
if (pstmt!=null) {pstmt.close();}
} catch (Exception e) {}
try {
if (con!=null) {con.close();}
} catch (Exception e) {}
}//end
System.out.println("END");
} // main() end
} // class end
- 4번 값은 rownum으로 인해 결과가 조회되지 않는다.
package jdbc0922;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Test07_selectPaging {
public static void main(String[] args) {
// 페이징
// 문제) sungjuk 테이블에서 이름순으로 정렬 후 행번호 4~6만 조회하시오.
int start=4;
int end=6;
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
String url ="jdbc:oracle:thin:@localhost:1521:xe";
String user ="system";
String password="1234";
String driver ="oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
con =DriverManager.getConnection(url, user, password);
System.out.println("오라클 DB 서버 연결 성공!!");
StringBuilder sql=new StringBuilder();
sql.append(" SELECT * ");
sql.append(" FROM ( ");
sql.append(" SELECT uname, aver, addr, rownum as rnum ");
sql.append(" FROM ( ");
sql.append(" SELECT uname, aver, addr ");
sql.append(" FROM sungjuk ");
sql.append(" ORDER BY uname ");
sql.append(" ) ");
sql.append(" ) ");
sql.append(" WHERE rnum>=? and rnum<=? ");
pstmt=con.prepareStatement(sql.toString()); // con(결과값) sql문을 실행시켜주는 명령어.
pstmt.setInt(1, start);
pstmt.setInt(2, end);
rs=pstmt.executeQuery(); // ResultSet을 실행시켜주는 명령어.
if(rs.next()) {
System.out.println("자료있음 @@");
do {
System.out.print(rs.getInt("rnum") + " ");
System.out.print(rs.getString("uname") + " ");
System.out.print(rs.getInt("aver") + " ");
System.out.print(rs.getString("addr") + " ");
System.out.println();
}while(rs.next()); //다음 cursor가 있는지?
}else {
System.out.println("자료없음 @@");
}//if end
} catch (Exception e) {
System.out.println("실패" + e);
}finally{ //자원반납 (순서주의)
try {
if (rs!=null) {rs.close();}
} catch (Exception e) {}
try {
if (pstmt!=null) {pstmt.close();}
} catch (Exception e) {}
try {
if (con!=null) {con.close();}
} catch (Exception e) {}
}//end
System.out.println("END");
} // main() end
} // class end