본문 바로가기
수업내용

20230515 수업내용🙌🙌🙌🙌

by titlejjk 2023. 5. 15.

package test.main;

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


public class MainClass02 {
	public static void main(String[] args) {
		//member
		int num = 4;
		String name = "주뎅이";
		String addr = "봉천동";
		
		 //DB 연결객체를 담을 지역 변수 만들기
		Connection conn = null;
		
		try {
	         //오라클 드라이버 로딩
	         Class.forName("oracle.jdbc.driver.OracleDriver");
	         //접속할 DB 의 정보 @아이피주소:port번호:db이름
	         String url="jdbc:oracle:thin:@localhost:1521:xe";
	         //계정 비밀번호를 이용해서 Connection 객체의 참조값 얻어오기
	         conn=DriverManager.getConnection(url, "scott", "tiger");
	         //예외가 발생하지 않고 여기까지 실행순서가 내려오면 접속 성공이다.
	         System.out.println("Oracle DB 접속 성공");
	      } catch (Exception e) {
	         e.printStackTrace();
	      }
		
		//sql문을 대신 실행해줄 객체의 참조값을 담을 지역변수 미리 만들기
		PreparedStatement pstmt = null;
		try {
			//실행할 미완성의 sql 문
			String sql = "INSERT INTO member"
					+ " (num, name, addr)"
					+ " VALUES(?,?,)";
			//미완성의 sql문을 전달하면서 PreparedStatement 객체의 참조값 얻어내기
			pstmt = conn.prepareStatement(sql);
			//PreparedStatement 객체의 메소드를 이용해서 미완성인 sql 문을 완성시키기(?에 값 바인딩하기)
			pstmt.setInt(1, num);//1번째 ? 에 숫자 바인딩
			pstmt.setString(2, name); //2번째 ? 에 문자열 바인딩
			pstmt.setString(3, addr); //3번째 ? 에 문자열 바인딩
			//sql 문 실행하기
			pstmt.executeUpdate();
			System.out.println("회원 정보를 저장했습니다.");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

insert update delete 문의 형식은 위 코드를 기본으로 비슷비슷하다.

package test.main;

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

public class MainClass03 {
	public static void main(String[] args) {
		//DB 연결 객체를 담을 지역 변수 만들기
				Connection conn = null;
				
				try {
			         //오라클 드라이버 로딩
			         Class.forName("oracle.jdbc.driver.OracleDriver");
			         //접속할 DB 의 정보 @아이피주소:port번호:db이름
			         String url="jdbc:oracle:thin:@localhost:1521:xe";
			         //계정 비밀번호를 이용해서 Connection 객체의 참조값 얻어오기
			         conn=DriverManager.getConnection(url, "scott", "tiger");
			         //예외가 발생하지 않고 여기까지 실행순서가 내려오면 접속 성공이다.
			         System.out.println("Oracle DB 접속 성공");
			      } catch (Exception e) {
			         e.printStackTrace();
			      }
				//3번 회원의 주소를 동물원으로 수정하고자 한다.
				int num = 3;
				String addr = "에버랜드";
				PreparedStatement pstmt = null;
				try {
					//실행할 미완성의 sql 문
					String sql = "UPDATE member"
							+ " SET addr = ?"
							+ " WHERE num = ?";
					//미완성의 sql문을 전달하면서 PreparedStatement 객체의 참조값 얻어내기
					pstmt = conn.prepareStatement(sql);
					//PreparedStatement 객체의 메소드를 이용해서 미완성인 sql 문을 완성시키기(?에 값 바인딩하기)
					pstmt.setInt(2, num);
					pstmt.setString(1, addr);
					//sql 문 실행하기
					pstmt.executeUpdate();
					System.out.println("회원 정보를 저장했습니다.");
				} catch (Exception e) {
					e.printStackTrace();
				}
	}
}

JDBC 이클립스로 DB수정하기

package test.main;

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

public class MainClass05 {
	public static void main(String[] args) {
		//DB 연결 객체를 담을 지역 변수 만들기
				Connection conn = null;
				
				try {
			         //오라클 드라이버 로딩
			         Class.forName("oracle.jdbc.driver.OracleDriver");
			         //접속할 DB 의 정보 @아이피주소:port번호:db이름
			         String url="jdbc:oracle:thin:@localhost:1521:xe";
			         //계정 비밀번호를 이용해서 Connection 객체의 참조값 얻어오기
			         conn=DriverManager.getConnection(url, "scott", "tiger");
			         //예외가 발생하지 않고 여기까지 실행순서가 내려오면 접속 성공이다.
			         System.out.println("Oracle DB 접속 성공");
			      } catch (Exception e) {
			         e.printStackTrace();
			      }
				//4번 회원을 삭제해 보세요.
				int num = 4;
				
				PreparedStatement pstmt = null;
				try {
					//실행할 미완성의 sql 문
					String sql = "DELETE FROM member"
							+ " WHERE num = ?";
					//미완성의 sql문을 전달하면서 PreparedStatement 객체의 참조값 얻어내기
					pstmt = conn.prepareStatement(sql);
					//PreparedStatement 객체의 메소드를 이용해서 미완성인 sql 문을 완성시키기(?에 값 바인딩하기)
					pstmt.setInt(1, num);
					//sql 문 실행하기
					pstmt.executeUpdate();
					System.out.println("회원 정보를 저장했습니다.");
				} catch (Exception e) {
					e.printStackTrace();
				}
	}
}

이클립스로 4번회원 삭제해보기

package test.main;

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


public class MainClass06 {
	public static void main(String[] args) {
		//시퀀스(member_seq)를 이용해서 회원정보 추가
		String name = "원숭이";
		String addr = "상도동";
		
		 //DB 연결객체를 담을 지역 변수 만들기
		Connection conn = null;
		
		try {
	         //오라클 드라이버 로딩
	         Class.forName("oracle.jdbc.driver.OracleDriver");
	         //접속할 DB 의 정보 @아이피주소:port번호:db이름
	         String url="jdbc:oracle:thin:@localhost:1521:xe";
	         //계정 비밀번호를 이용해서 Connection 객체의 참조값 얻어오기
	         conn=DriverManager.getConnection(url, "scott", "tiger");
	         //예외가 발생하지 않고 여기까지 실행순서가 내려오면 접속 성공이다.
	         System.out.println("Oracle DB 접속 성공");
	      } catch (Exception e) {
	         e.printStackTrace();
	      }
		
		//sql문을 대신 실행해줄 객체의 참조값을 담을 지역변수 미리 만들기
		PreparedStatement pstmt = null;
		try {
			//실행할 미완성의 sql 문
			String sql = "INSERT INTO member"
					+ " (num, name, addr)"
					+ " VALUES( member_seq.NEXTVAL, ?, ?)";
			//미완성의 sql문을 전달하면서 PreparedStatement 객체의 참조값 얻어내기
			pstmt = conn.prepareStatement(sql);
			//PreparedStatement 객체의 메소드를 이용해서 미완성인 sql 문을 완성시키기(?에 값 바인딩하기)
			pstmt.setString(1, name);//1번째 ? 에 문자열 바인딩
			pstmt.setString(2, addr);//2번째 ? 에 문자열 바인딩
			//sql 문 실행하기
			pstmt.executeUpdate();
			System.out.println("회원 정보를 저장했습니다.");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

시퀀스 값을 넣어서 테이블에 데이터 입력해보기

미리 DB에 INSERT할 메소드를 만들어서 사용해보기

package test.main;

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

import test.mypac.Member;

public class MainClass08 {
	public static void main(String[] args) {
		//수정할 회원의 정보
		int num = 1;
		String name = "이정호";
		String addr = "아현동";
		
		//아래의 update() 메소드를 이용해서 회원정보가 수정되도록 해 보세요.
		Member m = new Member();
		
		m.num = num;
		m.name = name;
		m.addr = addr;

		MainClass08.update(m);
	}
	
	public static void update(Member m) {
		//DB 연결 객체를 담을 지역 변수 만들기
		Connection conn = null;
		
		try {
	         //오라클 드라이버 로딩
	         Class.forName("oracle.jdbc.driver.OracleDriver");
	         //접속할 DB 의 정보 @아이피주소:port번호:db이름
	         String url="jdbc:oracle:thin:@localhost:1521:xe";
	         //계정 비밀번호를 이용해서 Connection 객체의 참조값 얻어오기
	         conn=DriverManager.getConnection(url, "scott", "tiger");
	         //예외가 발생하지 않고 여기까지 실행순서가 내려오면 접속 성공이다.
	         System.out.println("Oracle DB 접속 성공");
	      } catch (Exception e) {
	         e.printStackTrace();
	      }
		
		PreparedStatement pstmt = null;
		try {
			//실행할 미완성의 sql 문
			String sql = "UPDATE member"
					+ " SET name = ?, addr = ?"
					+ " WHERE num = ?";
			//미완성의 sql문을 전달하면서 PreparedStatement 객체의 참조값 얻어내기
			pstmt = conn.prepareStatement(sql);
			//PreparedStatement 객체의 메소드를 이용해서 미완성인 sql 문을 완성시키기(?에 값 바인딩하기)
			pstmt.setString(1, m.name);
			pstmt.setString(2, m.addr);
			pstmt.setInt(3, m.num);
			//sql 문 실행하기
			pstmt.executeUpdate();
			System.out.println("회원 정보를 저장했습니다.");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

update 메소드를 만들어 수정해보기.

DTO 클래스 만들어보기

이클립스에서 마우스 우클릭 ->source->generate 메뉴에서 constructor와 setter, getter 메소드 생성 가능

필드의 data type과 필드명만 정해지면 생성자, setter, getter메소드도 정해진 것이다.

package test.dto;
/*
 *	Data Transfer Object
 *
 *	- 여러가지의 정보를 하나의 객체에 담기 위해 설계된 클래스
 *	- 필드의 접근 지정자는 모두 private
 *	- 접근 메소드 setter, getter 메소드가 있어야 한다.
 *	- 디폴트(기본)생성자가 있어야 한다.
 *	- 인자로 필드의 모든값을 전달 받는 생성자도 있어야 한다.(있으면 좋음 option)
 */
public class MemberDto {
	//필드의 접근 지정자를 private로
	private int num;
	private String name;
	private String addr;
	
	//디폴트 생성자
	public MemberDto() {}

	public MemberDto(int num, String name, String addr) {
		super();
		this.num = num;
		this.name = name;
		this.addr = addr;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	
	//마우스 우클릭 => source => generate 메뉴에서 constructor 와 setter,getter 메소드 생성 가능
	
}

 

댓글