2 분 소요

DB클라이언트 프로그램

                       연결/인증
                       문장실행
                       결과패치              오라클
사용자    SQL  

                                                            둘이 함수가 다르다  연결하기 힘들다----->등장 JDBC  
                       연결/인증
                       문장실행
                       결과패치
                                           MS SQL

JDBC(통역기의 역할) JDBC을 쓰면 연결이 쉽다- 연결이 단일화하기 쉽다

 

순서

1.드라이버 로드하기

JDBC를 이용하는 자바 코드

1-1Class.forName("oracle.jdbc.driver.OracleDriver"); 
	메모리상에 드라이버가 올라감

1-2. Connection con = DriverManager.getConnection(...);
 연결이라는 것이 일어나고 확립이 되면 객체가 반환된다(연결객체)

1-3.Statement st =con.createStatement(); 
사용자로부터 요구받은 쿼리를 실행하게 된다 

1-4.Resultset rs = st.executeQuery(sql);
 레코드집합(결과집합)들이 나온다
 결과집합은 서버에 있고 클라이언트는 하나씩 받게 된다(한번에 못받음)
결과집합:쿼리문을 실행했을 때 나오는 결과 집합들 


서버쪽에서 클라이언트에게 주기 위해 커서가 있는데 레코드를 가르치는 포인트이다
커서가 준비되면 클라이언트 row가 Resultset이라고 준비된다(결과집합을 이용)

결과집합을 담을 빈그릇이 필요하다 

1-5.rs.next(); 주세요- 패치 -> 앞머리로 커서가 가르킨다(Before of File-Bof)
호출되어야 클라이언트에게 레코드하나를 전달된것이다

1-6.String title = rs.getString("title");title

컬럼에 대한것을 문자열로 주세요 그릇에서 문자열을 뽑아오게 된다
끝까지 가게되면 그상태 위치를 End of File(End of File) 이라고 한다

 

무조건 같은 코드 세트세트

Class.forName("oracle.jdbc.driver.OracleDriver"); 
Connection con = DriverManager.getConnection(...); 
Statement st =con.createStatement(); 
Resultset rs = st.executeQuery(sql);


rs.close(); 
st.close();
con.close();

 

2.연결 생성하기

package ex1;

import java.beans.Statement;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

public class Program {
	public static void main(String[] args) throws  SQLException, ClassNotFoundException{
  
        
//        try {
//			Class.forName("oracle.jdbc.driver.OracleDriver");
//			System.out.println("드라이버 검색 성공");
//		} catch (ClassNotFoundException e) {
//			System.err.println("드라이버 검색 실패");
//			System.exit(0);
//		}
//		
//		//데이터베이스 연결 - 커넥션 만들기 
//		Connection conn = null;
//		try {
//			conn = DriverManager.getConnection(
//					"jdbc:oracle:thin:@localhost:1521:orcl"
//					,"eunji", "1234"
//					
//					);
//			System.out.println("데이터베이스 연결 성공");
//		} catch (SQLException e) {
//			System.err.println("데이터베이스 연결 실패");
//			System.exit(0);
//		}
//		try {
//			if(conn != null) {
//				conn.close();
//			}
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}
//	}
//}


      
    String url ="jdbc:oracle:thin:@localhost:1521/orcl";   
	String sql = "SELECT*FROM NOTICE";
			
	Class.forName("oracle.jdbc.driver.OracleDriver"); 
	Connection con = DriverManager.getConnection(url,"eunji","1234"); 
	Statement st =con.createStatement();
	ResultSet rs = st.executeQuery(sql);
//	//next에서 
	
	while(rs.next()) {
		int id = rs.getInt("ID");
		String title = rs.getString("TITLE");
		String writerld = rs.getString("WRITER_ID");
		String content = rs.getString("CONTENT");
		Date regDate=rs.getDate("REGDATE");
		int hit = rs.getInt("hit");
		
	
	System.out.printf("id:%d, title:%s, writerld%s,content:%s, regDate;%s, hit:%d\n",
			id,title,writerld,regDate,content,hit);
	}
	
	rs.close(); 
	st.close();
	con.close();
	}
}




id:1, title:JDBC란 무엇인가?, writerldnewlec,content:2022-06-14, regDate;aaa, hit:0
id:2, title:JDBC란 무엇인가?, writerldnewlec,content:2022-06-14, regDate;aaa, hit:0
id:3, title:JDBC란 무엇인가?, writerldnewlec,content:2022-06-14, regDate;aaa, hit:0

 

3.문장 생성하기

package ex1;

import java.beans.Statement;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
//
public class Program {
	public static void main(String[] args) throws  SQLException, ClassNotFoundException{
  
        
//        try {
//			Class.forName("oracle.jdbc.driver.OracleDriver");
//			System.out.println("드라이버 검색 성공");
//		} catch (ClassNotFoundException e) {
//			System.err.println("드라이버 검색 실패");
//			System.exit(0);
//		}
//		
//		//데이터베이스 연결 - 커넥션 만들기 
//		Connection conn = null;
//		try {
//			conn = DriverManager.getConnection(
//					"jdbc:oracle:thin:@localhost:1521:orcl"
//					,"eunji", "1234"
//					
//					);
//			System.out.println("데이터베이스 연결 성공");
//		} catch (SQLException e) {
//			System.err.println("데이터베이스 연결 실패");
//			System.exit(0);
//		}
//		try {
//			if(conn != null) {
//				conn.close();
//			}
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}
//	}
//}


      
    String url ="jdbc:oracle:thin:@localhost:1521/orcl";   
	String sql = "SELECT*FROM NOTICE";
			
	Class.forName("oracle.jdbc.driver.OracleDriver"); 
	Connection con = DriverManager.getConnection(url,"eunji","1234"); 
	java.sql.Statement st =con.createStatement();
	ResultSet rs = st.executeQuery(sql);
//next에서 결과집합 반환하기
	while(rs.next()) {
		int id = rs.getInt("ID");
		String title = rs.getString("TITLE");
		String writerld = rs.getString("WRITER_ID");
		String content = rs.getString("CONTENT");
		Date regDate=rs.getDate("REGDATE");
		int hit = rs.getInt("hit");
		
		
//		if(hit>10) -> 오류 발생
		String sql = "SELECT * FROM NOTICE WHERE HIT>10";
		//셀렉트에는 옵션이 있어서 hit가 10개이상인 기능을 하는 필터링 기능을 한다 위의 조건이 필터링을 하게 되면 글이 많아질때 반복이 계속 돌아간다	

		//시퀄서버(sql 서버)는 데이터 공장 
	System.out.printf("id:%d, title:%s, writerld%s,content:%s, regDate;%s, hit:%d\n",
			id,title,writerld,regDate,content,hit);
	}
	
	rs.close(); 
	st.close();
	con.close();
	}
}

 

  • 게시글을 필터링 해야하는 경우

데이터 필터링,정렬,그룹화,등의 모든데이터연산은 데이터베이스에서 처리한다

 

자바: UI레이아웃만

데이터 가공처리: SQL이 한다

카테고리:

업데이트:

댓글남기기