Eggs Sunny Side Up
본문 바로가기
언어/JAVA

JDBC 기초_회원가입창 만들기

by guswn100059 2023. 3. 14.

Oracle과 Java 연결 방법 => JDBC

 

SQL DEVELOPER

해당 테이블 생성

CREATE TABLE bigmember(
  id varchar2(50) primary key
, pw varchar2(100) not null
, name varchar2(100) not null
, age number
, score number
);

COMMIT;

SELECT * FROM BIGMEMBER;

 

Eclipse

package JDBC;

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

public class Ex01_Join {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		// 사용자에게 회원가입 정보 입력받기
		// ID, PW, 이름, 나이
		System.out.print("ID 입력 : ");
		String id = sc.next();

		System.out.print("PW 입력 : ");
		String pw = sc.next();

		System.out.print("이름 입력 : ");
		String name = sc.next();

		System.out.print("나이 입력 : ");
		int age = sc.nextInt();

		System.out.print("점수 입력 : ");
		int score = sc.nextInt();

		// JDBC(Java Database Connectivity)
		// : JDBC 인터페이스 사용방법

		// try - catch : 예외처리 구문
		// 예외상황이 발생하더라도 실행을 멈추지 않음!

		// try 구문
		// --> 예외가 발생할 수도 있지만, 우선 시도해보는 구간

		// try 안에 있던 지역변수를 전역변수로 빼줘야 함.
		// 초기화하지 않으면 오류나기 때문에 초기화 필수!
		// 레퍼런스 타입은 기본형이 null임.
		PreparedStatement psmt = null;
		Connection conn = null;

		try {
			// 1. 드라이버 로딩
			// JDBC 드라이버란?
			// : Java에서 제공해주는 인터페이스들을 데이터베이스 회사들에서
			// 상속을 받아서 로직을 구현한 클래스 파일들의 모음
			// -->파일 이름은 대소문자 구분해서 정확하게 입력!!!!

			Class.forName("oracle.jdbc.driver.OracleDriver");
			// -->반드시, 프로젝트에 jar 파일 넣어주기
			// *jar 파일이란?
			// 클래스 파일들을 여러 개 모아놓은 압축파일
			// *프로젝트에 jar파일 추가하는 방법?
			// 프로젝트 선택 -> 마우스 우클릭 -> build path
			// -> configure build path -> libraries 탭 선택
			// -> class path 선택 -> 우측에 add external jars 버튼꾹
			// -> 원하는 jar파일 경로 선택 -> apply and close

			// 2. 데이터베이스 연결
			// 준비물 3개
			// 1) 연결 경로
			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			// JDBC 드라이버가 thin타입이다.
			// @localhost --> ip주소
			// 1521 --> port 번호
			// xe --> DB 별칭
			// 2) user name
			String user = "service";
			// 3) 계정 비밀번호
			String password = "12345";

			conn = DriverManager.getConnection(url, user, password);
			// Connection이란?
			// : 데이터베이스에 접속하기 위한 모든 메소드를 가진 인터페이스
			// -->데이터베이스와 하는 모든 통신은 conn을 통해서만 이루어진다.
			// -->사용가능한 테이블 목록, 컬럼들에 대한 정보 등
			// 연결된 데이터베이스의 정보들을 전부 가지고 있음

			// 3. SQL문 준비
			// 회원가입 -> BIGMEMBER테이블에 데이터를 추가
			// INSERT 구문이 필요
			String sql = "INSERT INTO BIGMEMBER VALUSE(?, ?, ?, ?, ?)";
			// ?인자
			// : 사용자로부터 어떤 데이터가 들어올지 모를 때 사용
			// : 지정한 데이터의 공간만큼 비워놓고 실행하기 전까지 대기

			// 4. SQL문 전송(실행)
			// 전송하기 전에 SQL문을 담아서 전송할 수 있는 형식으로 변경
			psmt = conn.prepareStatement(sql);

			// ?인자 채우는 작업 진행(반드시 실행 전에 진행할 것)
			// 데이터 바인딩(data binding) 작업
			psmt.setString(1, id);
			psmt.setString(2, pw);
			psmt.setString(3, name);
			psmt.setInt(4, age);
			psmt.setInt(5, score);

			// 실행
			int row = psmt.executeUpdate();
			// executeUpdate() : insert, update, delete->DML에 사용

			// 5. 결과를 이용한 작업처리
			// 사용자에게 어떤 결과를 보여줄지 정의
			if (row > 0) {
				System.out.println("회원가입 성공 : ");
			} else {
				System.out.println("회원가입 실패");
			}

		} catch (Exception e) {
			// -->모든 예외클래스는 Exception을 상속받는다.
			// -->Exception e = new ClassNotFoundException();
			// -->UpCasting 일어나는 개념

			// catch 구문
			// -->예외가 발생했을 때 어떤 로직을 수행할 지 작성하는 구간
			// -->()안에 있는 매개변수, 어떤 예외상황을 잡아줄지 기술하는 공간

			e.printStackTrace();
			// 예외상황이 왜 발생했고, 어디서 문제가 나고 있는지
			// 출력해주는 구문 --> 개발할때만 사용하기
			// -->배포할 때는 삭제하는 것이 좋음!
		} finally {
			// 위에서 예외상황이 발생하더라도 반드시 한 번은 들어오는 구간

			// 6. DB 연결 종료 --> 자원 반납
			try {
				//자원을 반납할 때는 항상 열어준 순서의 반대로 반납한다.
				
				// if문 안쪽에 실행구문이 하나일 경우 중괄호 생략 가능하다.
				if (psmt != null)
					psmt.close();

				if (conn != null)
					conn.close();

			} catch (SQLException e) {

				e.printStackTrace();
			}

		}

	}

}

 

SQL DEVELOPER

 

'언어 > JAVA' 카테고리의 다른 글

MVC 디자인 패턴  (1) 2023.03.15
JDBC_로그인  (0) 2023.03.15
Interface(인터페이스)  (0) 2023.03.13
OOP_추상화  (0) 2023.03.11
OOP_상속  (0) 2023.03.11

댓글