쌍용교육(JAVA)/JDBC

쌍용교육 -JDBC 수업 23일차 (DriverMain,ConnectionMain,CreateTableMain,AlterTableMain, DropTableMain)

구 승 2024. 4. 13. 16:32

DriverMain

package kr.s30.jdbc;

public class DriverMain {
	public static void main(String[] args) {
		try { //forName은 괄호안에 있는 오라클드라이버를 찾고 메모리에 올리는 역할을 한다.
			Class.forName("oracle.jdbc.OracleDriver"); //붉은줄을 없애려면 try catch를 해야됨.
			System.out.println("오라클 드라이버가 정상적으로 로드되었습니다.");
		}catch(ClassNotFoundException e){
			e.printStackTrace();
		}

	}
}

오라클 드라이버가 정상적으로 로드되었습니다.

ConnectionMain

  • Connection : 오라클연동
package kr.s30.jdbc;

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

public class ConnectionMain {
	public static void main(String[] args) {
		String db_driver = "oracle.jdbc.OracleDriver";
																								//포트:식별자
		String db_url = "jdbc:oracle:thin:@localhost:1521:xe";//localhost는 내 컴퓨터라서. 만약 원격일 경우는 ip주소를 입력해야됨
		String db_id = "user01";
		String db_password = "1234";
		try {
			//JDBC 수행 1단계 : 드라이버 로드 
			Class.forName(db_driver);
			//JDBC 수행 2단계 : Connection 객체 생성(오라클 접속을 위한 인증)
			Connection conn = DriverManager.getConnection(db_url,db_id,db_password);
			System.out.println("Connection 객체가 생성되었습니다.");
		}catch(SQLException e) {
			e.printStackTrace();
		}catch(ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
}

Connection 객체가 생성되었습니다.

  • Connection : 오라클연동
package kr.s30.jdbc;

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

public class ConnectionMain {
	public static void main(String[] args) {
		String db_driver = "oracle.jdbc.OracleDriver";
																								//포트:식별자
		String db_url = "jdbc:oracle:thin:@localhost:1521:xe";//localhost는 내 컴퓨터라서. 만약 원격일 경우는 ip주소를 입력해야됨
		String db_id = "user01";
		String db_password = "1234";
		try {
			//JDBC 수행 1단계 : 드라이버 로드 
			Class.forName(db_driver);
			//JDBC 수행 2단계 : Connection 객체 생성(오라클 접속을 위한 인증)
			Connection conn = DriverManager.getConnection(db_url,db_id,db_password);
			System.out.println("Connection 객체가 생성되었습니다.");
		}catch(SQLException e) {
			e.printStackTrace();
		}catch(ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
}

Connection 객체가 생성되었습니다.

CreateTableMain

  • Statement:SQL문장을 실어 나르는 역할
package kr.s31.statement;
import java.sql.Connection;//오라클 연동
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; //SQL문장을 실어 나르는 역할

public class CreateTableMain {
	public static void main(String[] args) {
		String db_driver = "oracle.jdbc.OracleDriver";
		String db_url = "jdbc:oracle:thin:@localhost:1521:xe";//localhost는 내 컴퓨터라서. 만약 원격일 경우는 ip주소를 입력해야됨
		String db_id = "user01";
		String db_password = "1234";
		
		Connection conn = null;
		Statement stmt = null;
		String sql = null;
		try {
			//JDBD 수행 1단계 : 드라이버 로드
			Class.forName(db_driver);
			//JDBD 수행 2단계 : Connection 객체 생성(오라클 접속을 위한 인증)
			conn = DriverManager.getConnection(db_url,db_id,db_password);
			
			System.out.println("test1 테이블을 생성합니다.");
			/*
			 * 테이블을 생성하는 SQL문
			 * 접속한 계정에 테이블명이 중복되면 에러가 발생하기 때문에 
			 * 동일 계정에서는 한 번만 수행함.
			 */
			sql = "CREATE TABLE test1(id VARCHAR2(10), age NUMBER)";
			
			//JDBC 수행 3단계 : Statement 객체 생성
			stmt = conn.createStatement();
			
			//JDBC 수행 4단계 : SQL문을 실행해서 DB에 테이블을 생성
			stmt.executeUpdate(sql);
			
			System.out.println("테이블이 정상적으로 생성되었습니다.");
			
		}catch(SQLException e) {
			e.printStackTrace();
		}catch(ClassNotFoundException e) {
			e.printStackTrace();
		}
		finally {
			//자원정리
			if(stmt != null) try {stmt.close();} catch(SQLException e) {}
			if(conn != null) try {stmt.close();} catch(SQLException e) {}
		}
	}
}

test1 테이블을 생성합니다.
테이블이 정상적으로 생성되었습니다.

만약 한 번 더 실행하면 동일 계정에서는 한 번만 수행하기 때문. 즉 테이블이름이 중복되기 때문에 에러가 발생한다.

SQL Developer를 들어가서 확인하면 TEST1이라는 테이블이 생성된다

AlterTableMain

package kr.s31.statement;

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

public class AlterTableMain {
	public static void main(String[] args) {
		String db_driver = "oracle.jdbc.OracleDriver";
		String db_url = "jdbc:oracle:thin:@localhost:1521:xe";//localhost는 내 컴퓨터라서. 만약 원격일 경우는 ip주소를 입력해야됨
		String db_id = "user01";
		String db_password = "1234";
		
		Connection conn = null;
		Statement stmt = null;
		String sql = null;
		
		try {
			//JDBC 수행 1단계 : 드라이버 로드
			Class.forName(db_driver);
			//JDBC 수행 2단계 : Connection 객체 생성(오라클 접속을 위한 인증)
			conn = DriverManager.getConnection(db_url,db_id,db_password);
			System.out.println("test1 테이블의 컬럼을 수정합니다.");
			
			//SQL문 작성
			sql = "ALTER TABLE test1 MODIFY(id VARCHAR2(10) NOT NULL)";
			
			//JDBC 수행 3단계 :Statement 객체 생성
			stmt = conn.createStatement();
			
			//JDBC 수행 4단계 :SQL문을 수행해서 테이블에 정보를 변경하는 작업 수행
			stmt.executeUpdate(sql);
			System.out.println("테이블의 컬럼 정보 수정을 완료했습니다.");
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			//자원정리
			if(stmt !=null)try {stmt.close();} catch(SQLException e) {}
			if(conn !=null)try {stmt.close();} catch(SQLException e) {}
		}
	}
}

test1 테이블의 컬럼을 수정합니다.
테이블의 컬럼 정보 수정을 완료했습니다.

NULLABLE 행의 ID부분이 YES에서 NO로 바뀜.

DropTableMain

package kr.s31.statement;

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

public class DropTableMain {
	public static void main(String[] args) {
		String db_driver = "oracle.jdbc.OracleDriver";
		String db_url = "jdbc:oracle:thin:@localhost:1521:xe";//localhost는 내 컴퓨터라서. 만약 원격일 경우는 ip주소를 입력해야됨
		String db_id = "user01";
		String db_password = "1234";
		
		Connection conn = null;
		Statement stmt = null;
		String sql = null;
		
		try {
			//JDBC 수행 1단계: 드라이버 로드
			Class.forName(db_driver);
			//JDBC 수행 2단계:Connection 객체 생성(오라클에 접속하기 위한 인증)
			conn = DriverManager.getConnection(db_url,db_id,db_password);
			
			System.out.println("test1 테이블 제거를 시작합니다.");
			
			sql = "DROP TABLE test1";
			
			//JDBC 수행 3단계: Statement 객체 생성
			stmt = conn.createStatement();
			
			//JDBC 수행 4 단계:SQL문을 실행해서 테이블을 삭제
			stmt.executeUpdate(sql);
			
			System.out.println("테이블이 정상적으로 삭제되었습니다.");
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			//자원정리
			if(stmt != null)try {stmt.close();}catch(SQLException e) {}
			if(conn != null)try {stmt.close();}catch(SQLException e) {}
		}
	}
}

test1 테이블 제거를 시작합니다.
테이블이 정상적으로 삭제되었습니다.

SQL Devloper를 확인하면 test1 테이블이 삭제된다.