본문 바로가기
IT/JDBC

DB연결 데이터 입출력(2)

by 바른롱매 2020. 3. 25.

SELECT

UserDto는  DB연결 데이터 입출력(1)에서와 동일합니다.

mainClass.java

package main;

import java.util.List;

import dto.UserDto;
import select.Select;

public class mainClass {

	public static void main(String[] args) {
		/*
			JDBC
			java database connectivity
		 */
		
		Select se = new Select();
		
		UserDto ud = se.Select("aaa");
		if(ud != null) {
			System.out.println(ud.toString());
			
		}else {
			System.out.println("데이터를 찾을수 없습니다");
		}
		
		ud = se.Select2("bbb");
		if(ud != null) {
			System.out.println(ud.toString());
			
		}else {
			System.out.println("데이터를 찾을수 없습니다");
		}
		
		
		List<UserDto> userlist = se.getUserList();
		
		for (UserDto user : userlist) {
			System.out.println(user.toString());
		}
		
	}

}

DBClose.java

package db;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBClose {
	
	public static void close(Statement stmt, Connection conn, ResultSet rs) {
		try {
			if(stmt != null) {
				stmt.close();
			}
			if(conn != null) {
				conn.close();
			}
			if(rs != null) {
				rs.close();
			}			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

DBConnection.java

package db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection {
	
	public static void initConnection() {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			System.out.println("Driver Loading Success!!");			
		} catch (ClassNotFoundException e) {			
			e.printStackTrace();
		}
	}
	
	public static Connection getConnection() {		
		Connection conn = null;
		
		try {
			conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.55:1521:xe", "hr", "hr");
			
			System.out.println("DB Connection Success!!");
		} catch (SQLException e) {			
			e.printStackTrace();
		}		
		
		return conn;
	}

}

Select.java

package select;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import db.DBClose;
import db.DBConnection;
import dto.UserDto;

public class Select {
	
	//한개의 데이터를 가져올때
	public UserDto Select(String id) {
		//쿼리문을 작성할땐 앞뒤로 한칸씩 떨어트려 놓자 
		String sql = " SELECT ID, NAME, AGE, JOINDATE "
				+ " FROM USERDTO "
				+ " WHERE ID = '" + id + "'";
				
		
		Connection conn = DBConnection.getConnection(); // db 정보 얻어오기 
		Statement stmt = null;
		
		ResultSet rs = null;
		UserDto dto =null;
		
		
		System.out.println("sql:" + sql);
		
		try {
			stmt = conn.createStatement();	// db 현상태를 얻어오기
			
			rs = stmt.executeQuery(sql); // sql문을 실행시켜준다.
			
			if(rs.next()) { // 쿼리문을 통해서 산출된 데이터
				
				String _id = rs.getString("ID");
				String _name = rs.getString("NAME");
				int _age = rs.getInt("AGE");
				String _joindate = rs.getString("JOINDATE");
				
				dto = new UserDto(_id, _name, _age, _joindate);
				
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBClose.close(stmt, conn, rs);		
		}
		return dto;
	}
	
	public UserDto Select2(String id) {
		//쿼리문을 작성할땐 앞뒤로 한칸씩 떨어트려 놓자 
		String sql = " SELECT ID, NAME, AGE, JOINDATE "
				+ " FROM USERDTO "
				+ " WHERE ID = ?";
				
		
		Connection conn =  DBConnection.getConnection(); // db 정보 얻어오기 
		PreparedStatement psmt = null;
		
		ResultSet rs = null;
		UserDto dto =null;
		
		
		System.out.println("sql:" + sql);
		
		try {
			psmt = conn.prepareStatement(sql);	// db 현상태를 얻어오기
			psmt.setString(1, id);	// id -> ? 에 대입된다.
			
			rs = psmt.executeQuery(); // sql문을 실행시켜준다.
			
			if(rs.next()) { // 쿼리문을 통해서 산출된 데이터
				
				String _id = rs.getString("ID");
				String _name = rs.getString("NAME");
				int _age = rs.getInt("AGE");
				String _joindate = rs.getString("JOINDATE");
				
				dto = new UserDto(_id, _name, _age, _joindate);
				
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBClose.close(psmt, conn, rs);		
			
		}
		return dto;
	}
	
	// 다수의 데이터 -> list<dto>
	
	public List<UserDto> getUserList() {
		//쿼리문을 작성할땐 앞뒤로 한칸씩 떨어트려 놓자 
		String sql = " SELECT ID, NAME, AGE, JOINDATE "
				+ " FROM USERDTO ";
				
		
		Connection conn = null; // db 정보 얻어와 연결용
		PreparedStatement psmt = null;	// 쿼리문을 실행하는용
		ResultSet rs = null;			// 결과를 받는 용
		
		List<UserDto> list = new ArrayList<UserDto>();
		
		
		System.out.println("sql:" + sql);
		
		try {
			
			conn = DBConnection.getConnection(); 	// db와 연결
			psmt = conn.prepareStatement(sql);		// db 현상태를 얻어오기
			rs = psmt.executeQuery();				// sql문을 실행시켜 데이터 받아온다.
			
			while(rs.next()) {						// 전체를 받아오기 때문에 반복문으로 받아준다.
				UserDto dto = new UserDto();
				
				dto.setId(rs.getString("ID"));		//sql문의 처음 컬럼값과 받아주는 변수의 값이 일치해야 한다.
				dto.setName(rs.getString("NAME"));	// 1 id 2 name 순으로 받아야 한다는 뜻이다 지금 코드에서는
				dto.setAge(rs.getInt("AGE"));
				dto.setJoindate(rs.getString("JOINDATE"));
				
				list.add(dto);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBClose.close(psmt, conn, rs);	
		}
		return list;
	}
	
}

 

'IT > JDBC' 카테고리의 다른 글

DB연결 데이터 입출력(1)  (0) 2020.03.15
JDBC DB연결셋팅  (0) 2020.03.03

댓글