JAVA - DB 연동 후 데이터 출력

Yoon·2022년 1월 5일
1

java

목록 보기
3/8

DB연동 후 데이터 소스코드 Sample

package javaexp.A08_db;

import java.sql.*;

public class A02_DatabaseDao {
	// ex) 연결 처리 객체 만들기.
	// 1. 공통 필드 선언
	private Connection con;
	private Statement stmt;
	private ResultSet rs;
	
	// 2. 공통 메서드 선언
	public void setConn() {
		// 1) 드라이버 연결
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("오류:"+e.getMessage());
		}
		
		// 2) 특정 서버 연결
		String info="jdbc:oracle:thin:@localhost:1521:xe";
		try {
			con = DriverManager.getConnection(info,"scott","tiger");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("오류:"+e.getMessage());
		}
		
		System.out.println("접속 성공");
	}
	// 조회 처리 메서드 구현 1단계(출력)
	public void empList() {
		// 1. 연결공통메서드 호출
			
		try {
			setConn();
			// 2. Statement 객체 생성 (Connection ==> Statement)
			stmt = con.createStatement();
			String sql = "SELECT * FROM EMP";
			// 3. ResultSet 객체 생성.sql의 결과
			rs = stmt.executeQuery(sql);
			// 4. while()을 통해 결과 내용 처리 sql의 결과는 처리
			// rs.next() 행단위로 이동하게 처리..
			int rowNum = 1;
			while(rs.next()) {
				System.out.print(rowNum+++"행"+"\t");
				// rs.get데이터유형("컬럼명/alias명");
				System.out.print(rs.getInt("empno")+"\t");
				System.out.print(rs.getString("ename")+"\t");
				System.out.print(rs.getString("job")+"\t");
				System.out.print(rs.getInt("mgr")+"\t");
				System.out.print(rs.getDate("hiredate")+"\t");
				System.out.print(rs.getDouble("sal")+"\t");
				System.out.print(rs.getDouble("comm")+"\t");
				System.out.print(rs.getInt("deptno")+"\t");
				System.out.println();
			}
			// 5. 자원 해제
			rs.close();
			stmt.close();
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			// 6. 예외 처리..
			System.out.println("오류:"+e.getMessage());
			if(rs!=null) rs = null; // 강제로 자원해제..
			if(stmt!=null) stmt = null; // 강제로 자원해제..
		}

	}
	
	// ex) A03_DatabaseDao.java를 만들고,
	//		필드, 공통메서드, public void deptList()로 선언하여
	//		sql을 select * from dept로 처리된 행을 출력하는 내용까지 처리.
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 객체 생성 및 메서드 처리..
		A02_DatabaseDao dao = new A02_DatabaseDao();
		dao.empList();
	}

}

1.공통 필드 선언

연결처리를 위해 공통 필드는 선언해 줍니다.

private Connection con;
private Statement stmt;
private ResultSet rs;

2. 공통 메서드 선언

JDBC 드라이버를 연결, 특정 서버에 연결합니다.

public void setConn() {
		// 1) 드라이버 연결
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("오류:"+e.getMessage());
		}
		
		// 2) 특정 서버 연결
		String info="jdbc:oracle:thin:@localhost:1521:xe";
       		// 외부 서버에 접속시 @localhost 부분을 ip로 설정합니다.
		try {
			con = DriverManager.getConnection(info,"scott","tiger");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("오류:"+e.getMessage());
		}
		
		System.out.println("접속 성공");
	}

2.1 실행

실행이되면 [접속 성공] 이 출력됩니다.

접속 성공

3. 조회처리 메서드 구현

테이블을 조회하기 위해 메서드를 제작합니다.

public void empList() {
		// 1. 연결공통메서드 호출
			
		try {
			setConn();
			// 2. Statement 객체 생성 (Connection ==> Statement)
			stmt = con.createStatement();
			String sql = "SELECT * FROM EMP";
			// 3. ResultSet 객체 생성.sql의 결과
			rs = stmt.executeQuery(sql);
			// 4. while()을 통해 결과 내용 처리 sql의 결과는 처리
			// rs.next() 행단위로 이동하게 처리..
			int rowNum = 1;
			while(rs.next()) {
				System.out.print(rowNum+++"행"+"\t");
				// rs.get데이터유형("컬럼명/alias명");
				System.out.print(rs.getInt("empno")+"\t");
				System.out.print(rs.getString("ename")+"\t");
				System.out.print(rs.getString("job")+"\t");
				System.out.print(rs.getInt("mgr")+"\t");
				System.out.print(rs.getDate("hiredate")+"\t");
				System.out.print(rs.getDouble("sal")+"\t");
				System.out.print(rs.getDouble("comm")+"\t");
				System.out.print(rs.getInt("deptno")+"\t");
				System.out.println();
			}
			// 5. 자원 해제
			rs.close();
			stmt.close();
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			// 6. 예외 처리..
			System.out.println("오류:"+e.getMessage());
			if(rs!=null) rs = null; // 강제로 자원해제..
			if(stmt!=null) stmt = null; // 강제로 자원해제..
		}

	}

4. 객체 생성 및 메서드 처리

객체를 생성해주고 메서드를 불러와 데이터를 확인합니다.

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 객체 생성 및 메서드 처리..
		A02_DatabaseDao dao = new A02_DatabaseDao();
		dao.empList();
	}

5. 컴파일 결과

접속 성공
1행	7369	SMITH	CLERK		7902	1980-12-17	800.0	0.0	20	
2행	7499	ALLEN	SALESMAN	7698	1981-02-20	1600.0	300.0	30	
3행	7521	WARD	SALESMAN	7698	1981-02-22	1250.0	500.0	30	
4행	7566	JONES	MANAGER		7839	1981-04-02	2975.0	0.0	20	
profile
나의 공부 일기

0개의 댓글