자바21일차

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

자바배우기

목록 보기
21/43

오늘의코드

package edu.java.jdbc03;

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

import oracle.jdbc.OracleDriver;

public class JDBCMain03_pstmt {
   // 1. DB에 사용할 상수들
   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";
   public static final String SQL_SELECT = 
         "SELECT * FROM " + TABLE_NAME + " ORDER BY " + COL_CONTACT_ID;
   
   
   public static void main(String[] args) {
      System.out.println("JDBC 3 - select all");
      
      Connection conn = null;
      PreparedStatement pstmt = null;
      ResultSet rs = null;
      
      try {
         // 2. Oracle JDBC 드라이버를 메모리에 로드
         DriverManager.registerDriver(new OracleDriver());
         System.out.println("드라이버 로드 성공");
         
         // 3. DB와 Connection(연결)을 맺음
         conn = DriverManager.getConnection(URL, USER, PASSWORD);
         System.out.println("DB 연결 성공");

         // 4. SQL 문장 작성
         // SELECT * FROM EX_CONTACT ORDER BY CONTACT_ID;
         
         // 5. Connection 객체를 사용하여 Statement 객체를 생성
         pstmt = conn.prepareStatement(SQL_SELECT);
         
                  
         // 6. SQL 문장 실행(DB 서버로 SQL 전송)
         rs = pstmt.executeQuery();
   
         // 7. DB 서버가 보낸 결과 확인/처리
         // ResultSet.next() : 
         // ResultSet에서 다음 행(row, record)이 있으면
         // true를 리턴하고, ResultSet이 가리키는 위치를 다음 위치로 변경
         
         // ArrayList<ContactVO>
         ArrayList<ContactVO> list = new ArrayList<>();
         while(rs.next()) { // 레코드가 존재할 때까지
            int contactId = rs.getInt(1); // CONTACT_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);
            list.add(vo);
         }
         
         for(ContactVO vo : list) {
            System.out.println(vo);
         }

      } 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()

} 
package edu.java.jdbc04;

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

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

public class JDBCMain04 {

	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";

	public static void main(String[] args) {
		System.out.println("JDBC 4 - select by contact_id");

		Connection conn = null;
		Statement stmt = 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 객체를 사용하여 Statement 객체를 생성
			stmt = conn.createStatement();

			// 6. SQL 문장 작성
			// SELECT * FROM EX_CONTACT WHERE CONTACT_ID = 4; 컨택드아이디로 오름차순 정렬을 하라
			String sql_select_by_contact_id = 
					"SELECT * FROM " + TABLE_NAME + // 테이블명을 한번에 바꾸기 위해서 이렇게 사용
					" WHERE " + COL_CONTACT_ID + " = 4";
			System.out.println(sql_select_by_contact_id);
			
			// 7. SQL 문장 실행(DB 서버로 SQL 전송)
			rs = stmt.executeQuery(sql_select_by_contact_id);
			
			// 8. DB 서버가 보낸 경과 확인/처리
			// ResultSet.next() :
			// REsultSet에서 다음 행(row or record)이 있으면
			// true를 리턴하고, ResultSet이 가리키는 위치를 다음 위치로 변경
			
			if(rs.next()) {
				int 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);
			}
			
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				stmt.close();
				conn.close();
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	} // end main()
	
} // end JDBCMain04
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

0개의 댓글