자바22일차

달달한스위츠·2024년 3월 4일

자바배우기

목록 보기
22/43

오늘의코드

package edu.java.jdbc05;

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

import oracle.jdbc.OracleDriver;

public class JDBCMain05 {

	public static final String URL = "jdbc:oracle:thin:@localhost:1521:xe"; // 접속할 오라클 DB 경로
	public static final String USER = "scott";
	public static final String PASSWORD = "tiger";

	public static final String TABLE_NAME = "EX_CONTACT";
	public static final String COL_CONTACT_ID = "CONTACT_ID";
	public static final String COL_NAME = "NAME";
	public static final String COL_PHONE = "PHONE";
	public static final String COL_EMAIL = "EMAIL";

	// 데이터 등록
	// INSERT INTO EX_CONTACT
	// VALUES (CONTACT_SEQ.NEXTVAL, ?, ?, ?);
	public static final String SQL_INSERT = "INSERT INTO " + TABLE_NAME + " VALUES (CONTACT_SEQ.NEXTVAL, ?, ?, ?)";

	public static void main(String[] args) {
		System.out.println("JDBC 5 - 입력받은 데이터를 쿼리에 적용하여 insert");

		Connection conn = null;
		PreparedStatement pstmt = null;
		// PreparedStatement : 매게변수를 갖고 있는 SQL 문장을 활용하기 위한 클래스 -> 즉 ?에 값을 넣기위한 방법이라고 생각할
		// 것
		// Statement와 상속 관계

		try {
			// 2. JDBC 드라이버를 메모리에 로드
			DriverManager.registerDriver(new OracleDriver());
			System.out.println("드라이버 로드 성공"); // 애러를 잡기위해서 넣어두는 것

			// 4. DB와 Connection(연결)을 맺음
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			System.out.println("DB 연결 성공"); // 마찬가지로 애러를 잡기위해서 넣어두는 것

			// 5. Connection 객체를 사용하여 PreparedStatement 객체를 생성
			pstmt = conn.prepareStatement(SQL_INSERT);

			Scanner sc = new Scanner(System.in);

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

			System.out.println("전화번호 입력>");
			String phone = sc.next();

			System.out.println("이메일 입력>");
			String email = sc.next();

			// 6. SQL 문장 완성 = SQL_INSERT 쿼리의 ?를 채워주는 코드
			pstmt.setString(1, name);
			pstmt.setString(2, phone);
			pstmt.setString(3, email);
			// SQL 쿼리의 ? 순서와 parameterIndex의 값을 동일하게 지정
			// 예시) ?가 첫 번째이면 parameterIndex = 1

			// setInt() : DB의 Number 타입
			// setString() : DB의 varchar, varchar2 타입
			// setFloat() : DB의 Float 타입
			// setDate() : DB의 Date 타입

			// 7. SQL 문장 실행(DB 서버로 SQL 전송)
			int result = pstmt.executeUpdate();

			// 8. DB 서버가 보낸 경과 확인/처리
			System.out.println(result + "행이 삽입되었습니다.");
			sc.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	} // end main()

} // end JDBCMain05
package edu.java.jdbc06;

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

import oracle.jdbc.OracleDriver;

public class JDBCMain06 {

	public static final String URL = "jdbc:oracle:thin:@localhost:1521:xe"; // 접속할 오라클 DB 경로
	public static final String USER = "scott";
	public static final String PASSWORD = "tiger";

	public static final String TABLE_NAME = "EX_CONTACT";
	public static final String COL_CONTACT_ID = "CONTACT_ID";
	public static final String COL_NAME = "NAME";
	public static final String COL_PHONE = "PHONE";
	public static final String COL_EMAIL = "EMAIL";
	
	// 데이터 수정
	// UPDATE EX_CONTACT
	// SET NAME = ?, PHONE = ?, EMAIL = ?
	// WHERE CONTACT_ID = ?
	public static final String SQL_UPDATE = "UPDATE " + TABLE_NAME
			+ " SET " +
			COL_NAME + " = ?, " +
			COL_PHONE + " = ?, " +
			COL_EMAIL + " = ? " +
			"WHERE " + COL_CONTACT_ID + " = ?";
	
	// 데이터 삭제
	// DELETE EX_CONTACT WHERE CONTACT_ID = ?
	public static final String SQL_DELETE =
			"DELETE " + TABLE_NAME + " WHERE "
			+ COL_CONTACT_ID + " = ?";
	
	public static void main(String[] args) {
		System.out.println("JDBC 6 - 입력받은 데이터를 쿼리에 적용하여 update, delete");

		Connection conn = null;
		PreparedStatement pstmt = null;
		// PreparedStatement : 매게변수를 갖고 있는 SQL 문장을 활용하기 위한 클래스 -> 즉 ?에 값을 넣기위한 방법이라고 생각할 것
		//						Statement와 상속 관계

		try {
			// 2. JDBC 드라이버를 메모리에 로드
			DriverManager.registerDriver(new OracleDriver());
			System.out.println("드라이버 로드 성공"); // 애러를 잡기위해서 넣어두는 것

			// 4. DB와 Connection(연결)을 맺음
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			System.out.println("DB 연결 성공"); // 마찬가지로 애러를 잡기위해서 넣어두는 것

			// 5. Connection 객체를 사용하여 PreparedStatement 객체를 생성
			pstmt = conn.prepareStatement(SQL_UPDATE);
			
			Scanner sc = new Scanner(System.in);
			
			System.out.println("이름 입력>");
			String name = sc.next();
			
			System.out.println("전화번호 입력>");
			String phone = sc.next();
			
			System.out.println("이메일 입력>");
			String email = sc.next();
			
			System.out.println("번호 입력>");
			int contactId = sc.nextInt();
			
			
			// 6. SQL 문장 완성 = SQL_INSERT 쿼리의 ?를 채워주는 코드
			pstmt.setString(1, name);
			pstmt.setString(2, phone);
			pstmt.setString(3, email);
			pstmt.setInt(4, contactId);
			// SQL 쿼리의 ? 순서와 parameterIndex의 값을 동일하게 지정
			// 예시) ?가 첫 번째이면 parameterIndex = 1
			
			// setInt() : DB의 Number 타입
			// setString() : DB의 varchar, varchar2 타입
			// setFloat() : DB의 Float 타입
			// setDate() : DB의 Date 타입
			
			// 7. SQL 문장 실행(DB 서버로 SQL 전송)
			int result = pstmt.executeUpdate();
			
			// 8. DB 서버가 보낸 경과 확인/처리
			System.out.println(result + "행이 수정되었습니다.");
			sc.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	} // end main()
	
} // end JDBCMain06
package edu.java.jdbc07;

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

import edu.java.jdbc03.ContactVO;
import oracle.jdbc.OracleDriver;

public class JDBCMain07 {

	public static final String URL = "jdbc:oracle:thin:@localhost:1521:xe"; // 접속할 오라클 DB 경로
	public static final String USER = "scott";
	public static final String PASSWORD = "tiger";

	public static final String TABLE_NAME = "EX_CONTACT";
	public static final String COL_CONTACT_ID = "CONTACT_ID";
	public static final String COL_NAME = "NAME";
	public static final String COL_PHONE = "PHONE";
	public static final String COL_EMAIL = "EMAIL";

	// SELECT * FROM EX_CONTACT WHERE CONTACT_ID = ?
	public static final String SQL_SELECT_BY_CONTACT_ID = "SELECT * FROM " + TABLE_NAME + " WHERE " + COL_CONTACT_ID
			+ " = ?";

	public static void main(String[] args) {
		System.out.println("JDBC 7 - 입력된 번호로 select");

		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null; // select query 결과 저장할 클래스

		try {
			// 2. JDBC 드라이버를 메모리에 로드
			DriverManager.registerDriver(new OracleDriver());
			System.out.println("드라이버 로드 성공");

			// 4. DB와 Connection(연결)을 맺음
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
			System.out.println("DB 연결 성공");

			// 5. Connection 객체를 사용하여 prepareStatement 객체를 생성
			pstmt = conn.prepareStatement(SQL_SELECT_BY_CONTACT_ID);

			// 6. SQL 문장 작성
			Scanner sc = new Scanner(System.in);
			System.out.println("인덱스 입력>");
			int contactId = sc.nextInt();

			pstmt.setInt(1, contactId);

			// 7. SQL 문장 실행(DB 서버로 SQL 전송)
			rs = pstmt.executeQuery();

			// 8. DB 서버가 보낸 경과 확인/처리
			// ResultSet.next() :
			// REsultSet에서 다음 행(row or record)이 있으면
			// true를 리턴하고, ResultSet이 가리키는 위치를 다음 위치로 변경

			if (rs.next()) {
				contactId = rs.getInt(1); // COMTACT_ID 컬럼
				String name = rs.getString(2); // NAME 컬럼
				String phone = rs.getString(3); // PHONE 컬럼
				String email = rs.getString(4); // EMAIL 컬럼

				ContactVO vo = new ContactVO(contactId, name, phone, email);
				System.out.println(vo);
			}

			sc.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				pstmt.close();
				conn.close();
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	} // end main()

} // end JDBCMain07

DB끝 이제 사이드 프로젝트 시작!

0개의 댓글