JAVA

DAY 13 ( JDBC 오라클 [ 로그인, 회원정보 삭제, 조회, 수정 ] 실습 )

도키마 2024. 6. 5. 15:26

 

 

 

 

 

 

 

오늘의 노래 추천 ☕

 

 
B@ck 2 where we Belong
아티스트
Billlie (빌리)
앨범
the Billage of perception: chapter two
발매일
1970.01.01

 

와 이건 진짜 나만 알려고했는데 보따리 풀었다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DAY 13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[ 로그인을 위한 JDBC 코드 작성 실습 ]

 

사용자에게 아이디와 비밀번호를 입력받아 로그인을 하고 결과 출력하기

 

 

 

 

입력, 변수 초기화

 

드라이버 로딩, DB 연결

 

Query 문 작성

 

SQL 문 실행

 

catch 문과 자원 반납

 

		// 로그인을 위해 사용자에게 ID PW 입력받기
		Scanner sc = new Scanner(System.in);
		System.out.print("ID를 입력해주세요 : ");
		String id = sc.next();
		System.out.print("비밀번호를 입력해주세요 : ");
		String pw = sc.next();
		
		Connection conn = null;
		PreparedStatement psmt =  null;
		ResultSet rs = null;
		
		try { // 1. 드라이버 로딩
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			// 2. DB 연결
			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			String user = "hr";
			String password = "12345";
			
			conn = DriverManager.getConnection(url, user, password);
			
			if(conn != null) {
				System.out.println("연결성공");
			}else {
				System.out.println("연결실패");
			}
			
			// 3. sql Query 문 작성
			// 로그인 > 테이블에 데이터가 있는지, 그 데이터와 일치하는지 확인
			// 아이디, 비밀번호가 일치하는 데이터의 모든 컬럼 가져오기
			
			String sql = "SELECT * FROM BIGDATAMEMBER WHERE ID = ? AND PASSWORD = ?";
			
			psmt = conn.prepareCall(sql);
			
			// ? 인자 채워주기 (데이터 바인딩)
			psmt.setString(1, id);
			psmt.setString(2, pw);
			
			// 4. sql 문 실행
		
			rs = psmt.executeQuery();// 리턴타입이 ResultSet
			// 실행을 위해서 executeQuery 를 사용하는데 리턴타입이 ResultSet
			// 조회된 데이터를 테이블형태로 표현하는 자료구조
			// cursor 형태로 컬럼명을 가르키고 있기에 한칸 내려줘야 데이터에 접근 가능
			// * cursor 가 가르키고 있는 데이터만 가져올 수 있음
			
			// rs.next();
			// 커서를 내렸을 때 값이 있으면 true 를 반환 그렇지않으면 false 반환
			
			if(rs.next()) {
				String uName = rs.getString(3);
				System.out.println(uName+"님 환영합니다");
			}else {
				System.out.println("로그인에 실패했습니다");
				System.out.println("ID 와 비밀번호를 확인해주세요");
			}
			
		} catch (Exception e) {
			// ClassNotFoundException e
			// 모든 예외 클래스의 슈퍼 클래스가 Exception
			// Exception e = new SQLExecption(); ㅡ> 업캐스팅
			e.printStackTrace();
		}finally {	// 5. DB 연결 종료(자원 반납)
			try {
				if(rs != null) {
					rs.close();
				}if(psmt != null) {
					psmt.close();
				}if(conn != null) {
					conn.close();
				}
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[ 회원 정보 삭제를 위한 JDBC 코드 작성 실습 ]

 

사용자에게 아이디와 비밀번호를 입력받아 해당 회원 정보를 삭제하기 DELETE

 

 

 

 

 

입력, 변수 초기화

 

DB 연결

 

SQL 문 작성

 

SQL 실행

 

catch 문, 자원 반납

 

		// 회원 정보를 삭제하는 기능
		// 사용자에게 ID, PW 입력받기
		Scanner sc = new Scanner(System.in);
		System.out.print("삭제할 계정의 아이디를 입력하세요 : ");
		String id = sc.next();
		System.out.print("삭제할 계정의 비밀번호를 입력하세요 : ");
		String pw = sc.next();
		
		Connection conn = null;
		PreparedStatement psmt = null;
		
		
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			String user = "hr";
			String password = "12345";
			
			conn = DriverManager.getConnection(url, user, password);
			
			if(conn!=null) {
				System.out.println("연결성공");
			}else System.out.println("연결실패");
			
			String sql = "DELETE FROM BIGDATAMEMBER WHERE ID = ? AND PASSWORD = ?";
			
			psmt = conn.prepareStatement(sql);
			
			psmt.setString(1, id);
			psmt.setString(2, pw);
			
			int row = psmt.executeUpdate();
			
			if(row>0) {
				System.out.println("회원정보 삭제 성공");
			}else System.out.println("회원정보 삭제 실패");
			
			
		} catch (ClassNotFoundException e) {
			
			e.printStackTrace();
		} catch (SQLException e) {
			
			e.printStackTrace();
		}finally {
			try {
			 if(psmt != null) {
				psmt.close();
			}if(conn != null) {
				conn.close();
			}
			
		}catch (SQLException e) {
			e.printStackTrace();
		}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[ 회원 정보 조회를 위한 JDBC 코드 작성 실습 ]

 

테이블의 전체 정보를 조회하기 SELECT

 

 

 

 

변수 초기화

 

DB 연결

 

SQL 문 작성 및 실행

 

catch 문, 자원반납

 

		// 실행을 하면 등록되어 있는 회원 정보를 모두 보여주기
		// ====== 회원정보 ======
		// id   이름   나이   점수
		// 값    값     값    값

		Connection conn = null;
		PreparedStatement psmt =  null;
		ResultSet rs = null;
		
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			String user = "hr";
			String password = "12345";
			
			conn = DriverManager.getConnection(url, user, password);
			
			if(conn!=null) System.out.println("연결성공");
			else System.out.println("연결실패");
			
			String sql = "SELECT * FROM BIGDATAMEMBER";
			
			psmt = conn.prepareStatement(sql);
			rs = psmt.executeQuery();
			
			System.out.println("========= 회원정보 =========");
			System.out.println("id   pw    이름   나이 점수");
			
			while(rs.next()) {
				for(int i=1; i<6; i++) {
					String data = rs.getString(i);
					System.out.print(data+"  ");
				}
				System.out.println();
			}
			System.out.println("조회 완료");
			
		} catch (ClassNotFoundException e) {
			
			e.printStackTrace();
		} catch (SQLException e) {
			
			e.printStackTrace();
		}finally {
			try {
				if(rs != null) {
					rs.close();
				}if(psmt != null) {
					psmt.close();
				}if(conn != null) {
					conn.close();
				}
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}



 

 

 

 

 

 

 

 

 

 

 

 

 

 

[ 회원 정보 수정을 위한 JDBC 코드 작성 실습 ]

 

사용자에게 아이디와 비밀번호, 점수를 입력받아 점수를 수정하기 UPDATE

 

 

 

 

입력, 변수 초기화

 

 

드라이버 로딩, DB 연결

 

 

SQL 문 작성 및 실행

 

 

 

자원 반납은 생략

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

Bye