본문 바로가기

Full Stack 교육 회고록

8/30 [JAVA]- JDBC 응용

728x90
SMALL

<Ex_Delete>

package Ex01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class Ex_Delete {

	public static void main(String[] args) {
			
		// 삭제 하고자 하는 이름과 동일한 이름을 가지고 있는
		// 데이터 삭제하기
		// ex) 김미희 입력시 -> 해당 데이터 삭제!
		Connection conn = null;
		PreparedStatement psmt = null;
		Scanner sc = new Scanner(System.in);
		
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		
			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			String db_id = "hr";
			String db_pw = "hr";
			conn = DriverManager.getConnection(url,db_id, db_pw);
			
			if(conn != null) {
				System.out.println("접송 성공");			
			}else {
				System.out.println("접송 실패");
			}
			
			System.out.print("삭제 할 이름 : ");
			String name = sc.next();
			
			// 입력한 이름과 동일한 데이터 삭제하는 sql 문장입력하기
			String sql = "delete from student where name = ?";
			

			psmt = conn.prepareStatement(sql);
			
			//?에 해당하는 데이터 연결하기
			psmt.setString(1, name);
			

			int result = psmt.executeUpdate();

			if (result > 0) {
				System.out.println("삭제 성공");
			} else {
				System.out.println("삭제 실패");
			}

		} catch (Exception e) {
			System.out.println("오류 발생!");
		}

		finally {
			try {
				if (psmt != null) {
					psmt.close();
				}
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

<Ex_insert>

package Ex01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class Ex_Insert {

	public static void main(String[] args) {

		// 객체 생성
		Connection conn = null;
		PreparedStatement psmt = null;
		
		Scanner sc = new Scanner(System.in);

		try {
			// 1. jdbc 동적 로딩!
			Class.forName("oracle.jdbc.driver.OracleDriver");

			// 2.데이터베이스 연결!
			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			String db_id = "hr";
			String db_pw = "hr";

			conn = DriverManager.getConnection(url, db_id, db_pw);
			if (conn != null) {
				System.out.println("접속 성공!");
			} else {
				System.out.println("접속 실패");
			}

			// 3. sql 전송
			// '강예진', 20, '여성' -> insert 문장 구현!
			
			System.out.print("이름 : ");
			String name = sc.next();
			System.out.print("나이 : ");
			int age = sc.nextInt();
			System.out.print("성별 : ");
			String gender = sc.next();
			
			String sql = "insert into student values(?, ?, ?)";

			psmt = conn.prepareStatement(sql);
			
			//?값에 실제 값들이 연결될 수 있도록 만들어 주기
			//set(위치, 데이터 값) -> 위치는 1부터 시작한다!
			psmt.setString(1, name);
			psmt.setInt(2, age);
			psmt.setString(3, gender);

			// prepareStatement의 사용함수!
			// - Query() : 테이블의 전후가 바뀌는 작업 수행시 '조회'
			// - Update() : 테이블의 전후가 수정되는 작업 수행시 '삽입' , '수정', '삭제'

			int result = psmt.executeUpdate();

			if (result > 0) {
				System.out.println("삽입 성공");
			} else {
				System.out.println("삽입 실패");
			}

		} catch (ClassNotFoundException e) {
			System.out.println("드라이버 연결 오류");
		} catch (SQLException e) {
			System.out.println("데이터베이스 오류");
		}

		// 4. 객체 연결 종료
		finally {// 마지막에 무조건 수행할 수 있는 키워드
			// 객체 닫는 순서? 역순으로...
			// Connection(conn) <- PreparedStatement(psmt) <- ResultSet(rs)

			try {
				if (psmt != null) {
					psmt.close();
				}
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

	}

}

<Ex_Select>

package Ex01;

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

public class Ex_Select {

	public static void main(String[] args) {
		
		//JDBC 연결순서
		//0. (선행작업) 프로젝트에 ojdbc6.jar 파일 연결
		//1. JDBC 드라이버 연결
		//2. 데이터베이스 연결
		//3. SQL문 작성 및 전송
		//4. 객체 연결 종료
		
		//객체 생성 및 선언
		Connection conn = null;
		PreparedStatement psmt = null;
		ResultSet rs = null;
		
		//try: 예외 처리를 진행 할 수 있는 구문!
		//catch : try 실행시 발생하는 오류를 catch문을 통해 해결할 수 있다
		try {
			//1. JDBC 드라이버 연결
			//Class.forName(): 드라이버 연결에 필요한 클래스 찾아오기!
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			//2. 데이터베이스 연결 -> Connection 객체 필요!
			// 데이터 베이스에 연결하기 위한 필요 정보! (DB주소, 아이디, 비밀번호)
			
			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			String db_id ="hr";
			String db_pw = "hr";
			
			conn = DriverManager.getConnection(url, db_id, db_pw);
			
			//접속이 잘 됐는지 판단하기
			if(conn !=null) {
				System.out.println("접속 성공!");
			}else {
				System.out.println("접속 실패");
			}	
			
			//3. SQL 작성 및 전송 -> PreparedStatement
			String sql = "select * from student";
			
			psmt = conn.prepareStatement(sql);
			
			//sql 문장 전송 작업필요!
			// ResultSet -> select sql문 실행시 돌아오면 테이블 형태를 
			// 담을 수 있는 객체!
			rs = psmt.executeQuery();
			
			while(rs.next()) {
			  //String name = rs.getString("name");
				String name = rs.getString(1);     //->숫자는 컬럼 번호를 뜻한다
				int age = rs.getInt(2);
				String gender = rs.getString(3);
				
				//하나의 행에 대하여 다 가져온 후 한번에 출력하기
				System.out.println(name + " / "+ age + " / "+ gender);
			}
			
	
		} catch (ClassNotFoundException e) {
			System.out.println("드라이버 연결 오류");
		} catch (SQLException e) {
			System.out.println("데이터베이스 연결 오류");
		}
		
		//4. 객체 연결 종료
		finally {//마지막에 무조건 수행할 수 있는 키워드 
			//객체 닫는 순서? 역순으로...
			// Connection(conn) <- PreparedStatement(psmt)  <- ResultSet(rs)
			
				try {
					if(rs != null) {
					   //객체사용 여부 확인
					   rs.close();
					}if(psmt !=null) {
						psmt.close();
					}if(conn !=null) {
						conn.close();
					}
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		
		}
	}

}
package Ex01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class Ex_Update {

	public static void main(String[] args) {

		Connection conn = null;
		PreparedStatement psmt = null;
		
		Scanner sc = new Scanner(System.in);

		// 1. 동적로딩 -> Class.forName()
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");

			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			String db_id = "hr";
			String db_pw = "hr";
			conn = DriverManager.getConnection(url, db_id, db_pw);

			if (conn != null) {
				System.out.println("접속 성공");
			} else {
				System.out.println("접속 실패");
			}
			
			System.out.println("수정할 내용 선택 : [1]이름 [2]나이 [3]성별");
			int menu = sc.nextInt();
			
			String sql = "";
			
			if(menu==1) {
				sql="";
				psmt = conn.prepareStatement(sql);
				
			}else if(menu==2) {
				System.out.print("변경 할 이름 : ");
				String name = sc.next();
				
				System.out.print("변경 될 나이: ");
				int age =sc.nextInt();
				// '채수민'과 같은 이름의 age에 대하여 25값으로 수정하는 sql문구 작성
				sql = "Update student set age=? where name=?";
				
				psmt = conn.prepareStatement(sql);
				
				//?에 해당하는 데이터 연결하기
				psmt.setInt(1,age);
				psmt.setString(2, name);
				
			}else if(menu==3) {
				sql="";
				psmt = conn.prepareStatement(sql);
				
			}
			
			//name, age, gender

			int result = psmt.executeUpdate();

			if (result > 0) {
				System.out.println("수정 성공");
			} else {
				System.out.println("수정 실패");
			}

		} catch (Exception e) {
			System.out.println("오류 발생!");
		}

		finally {
			try {
				if (psmt != null) {
					psmt.close();
				}
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

<sql_student.sql>

select * from student;

insert into student values('김동원', 30, '남성');

/* 실행 단축키: 해당문 드레그 후 alt+x */
728x90
LIST