본문 바로가기

자바/오라클 이클립스 연동

이클립스를 이용한 오라클 DB CRUD

자! 오늘은 이클립스를 이용해서 클래스 내에서  오라클 DB내의 데이터를 DML를 이용해서  조작해볼건데욧!

 

DML란! Data Manipulation Language로 데이터 정의어 입니다. 데이터 정의어에 해당하는 명령어는 4개가 있는데요!

 

* SELECT  : SELECT 는  테이블 내의 데이터를 조회할 때 쓰이는 명령어 입니다.!

  • 기본적인 구조는 SELECT 조회을 원하는 컬럼 FROM 테이블 이름 WHERE 조건 입니다. 
  • SELECT * FROM book WHERE bookname='오라클'  => book 이라는 테이블에서 bookname이 오라클인 칼럼을 모두 조회하겠다라는 뜻이 됩니다! , 여기서 *은 all를 뜻합니다.

 * UPDATE : UPDATE는 테이블 내의 데이터를 수정할 때 쓰이는 명령어 입니다.!

  •  기본적인 구조는   UPDATE 테이블명 SET 칼럼명 = '수정할 값' WHERE 조건 입니다.
  • UPDATE book SET bookname = '이클립스' WHERE bookname ='오라클' -> book이라는 테이블에서 bookname이 오라클인것을  이클립스로 수정하겠다~ 라는 것을 뜻합니다.!

* INSERT : INSERT 는 테이블에 데이터를 삽입할 때 쓰이는 명령어 입니다!

  • 기본적인 구조는 INSERT INTO 테이블명 넣을 칼럼명 VALUES 넣을 데이터 입니다!
  • INSERT INTO book (책ID,책이름,가격) VALUES ('1','홍길동전'.'3000') -> book이라는 테이블 안에 책ID,책이름,가격 이라는 칼럼명에 1,홍길동전,3000을 삽입하는 것입니다 .  테이블 내의 모든 칼럼에 대해 insert할 떄는 칼럼명을  생략 해셔도 됩니다.

* DELETE : DELETE 는 테이블 내 데이터를 삭제 할 때 쓰이는 명령어 입니다.

  • 기본적인 구조는 DELETE FROM 테이블명 WHERE 조건 입니다. 
  • DELETE FROM book WHERE bookname ='이클립스' -> book 이라는 테이블 안에 이클립스라는 bookname을 가진 칼럼을 삭제 한다는 뜻입니다!

 

자 그럼 이클립스로 들어가서 한번 동작 해봅시다!

 

우선 이번 예제에서 쓰일 Table을 소개하겠습니다! 칼럼명이 이렇게 되있고!

데이터는 각자 원하는시는대로 채우셔도 상관없습니다!

 

 

 

우선 이클립스에서 오라클 db를 사용하려면  사용할 프로젝트 오른쪽마우스 build path- configuar build path에 들어가

ojdbc 추가 해주시구요!

 

다음을 작성해 줍니다!

package study02_dml;

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

import study01.login.User;

public class CRUDtest {

	 Connection con;
	static{// 맨 처음 실행 될때 static 메소드가 가장 먼저 실행되므로  제일 먼저 오라클 driver를 연결할 수있게끔 하였습니다! 
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("오라클 연결 성공");
			System.out.println();
	
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("해당 클래스를 찾을 수 없습니다.");
		}// Driver :가교(다리역할)
	}
    // Oracle DB와 연동 부분
	public void connect(){
	
		String str = "jdbc:oracle:thin:@localhost:1521:orcl"; // 사무실 번지
		try {
			con = DriverManager.getConnection(str, "madang", "madang");
			System.out.println("Connection Success!");
			
		} catch (SQLException e) {
			System.out.println("잘못된 db 정보입니다.");
		}// Door lock
	}
	 // insert문 수행
	public void insert() {
		String sql = "INSERT INTO member VALUES('aaa','1111','홍길동','22','서울시','a@a.com')";
		try {
			Statement stmt = con.createStatement();
			stmt.executeUpdate(sql);
			System.out.println("정상적으로 insert문을 수행했습니다.");
			System.out.println();
		} catch (SQLException e) {
			System.out.println("sql 문제입니다.");
		}
	}
	
    // select문 실행
	public void select() {
		String query= "select * from member";
		Statement stmt;
		try {
			stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery(query);
			
			while(rs.next()) {
			
				String id =rs.getString("ID");
				String password= rs.getString(2);
				String name = rs.getString("NAME");
				int age = rs.getInt(4);
				String address = rs.getString(5);
				String eamil = rs.getString(6);
				
				System.out.printf("아이디 : %8s ,비밀번호 :  %s, 이름 :  %s, 나이 : %d, 주소 :  %s, 이메일 :  %s",id, password,name, age,address,eamil);
				System.out.println();
			}
		} catch (SQLException e) {
			System.out.println("sql 문제입니다.");
		}
	
			
				
	}
	
	// update문 실행
	public void update() {
		
		String sql = "UPDATE member SET address = '부산시' WHERE id = 'aaa'";
		try {
			Statement stmt = con.createStatement();
			stmt.executeUpdate(sql);
			System.out.println("정상적으로 update 되었습니다.");
			System.out.println();
			
		} catch (SQLException e) {
			System.out.println("sql 문제입니다.");
		}
		
	}
	
    // delete문 실행
	public  void delete() {
		String sql = "DELETE member WHERE id = 'aaa'";
		
		try {
			Statement stmt = con.createStatement();
			stmt.executeUpdate(sql);
			System.out.println("정상적으로 delete 되었습니다.");
			System.out.println();
			
		} catch (SQLException e) {
			System.out.println("sql 문제입니다.");
		}
		
	}
	
	public static void main(String[] args) {
		
		CRUDtest st = new CRUDtest();
		st.connect();
		st.insert();
		System.out.println("insert 수행 후");

		st.connect();
		st.select();
		
		st.connect();
		st.update();
		System.out.println("update 수행 후");


		st.connect();
		st.select();
		System.out.println();

		
		st.connect();
		st.delete();
		System.out.println("delete 수행 후");
		
		st.connect();
		st.select();
		

	}

}

 

Statement 가 아닌 PreparedStatement 사용하기!

-PreparedStatement는 statement보다 더 효율적이고 깔끔하게 코드를 작성 할 수있습니다!

 

sql 쿼리문에 value 자리에 ? 를 넣고

preparedstatement.setString(? index , 넣을 값) 을 통해 좀 더 효율적으로 코드를 짤 수 있습니다

package study02_dml;

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

import study01.login.User;

public class CRUDtest_Pstmt {
//	Statement stmt=null;
	PreparedStatement pstmt = null;
	 Connection con;
	static{
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("오라클 연결 성공");
			System.out.println();
	
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("해당 클래스를 찾을 수 없습니다.");
		}// Driver :가교(다리역할)
	}
	public void connect(){
	
		String str = "jdbc:oracle:thin:@localhost:1521:orcl"; // 사무실 번지
		try {
			con = DriverManager.getConnection(str, "madang", "madang");
			System.out.println("Connection Success!");
			
		} catch (SQLException e) {
			System.out.println("잘못된 db 정보입니다.");
		}// Door lock
	}
	
	public void insert() {
		String sql = "INSERT INTO member VALUES(?,?,?,?,?,?)";
		try{
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, "aaa"); // sql의 1번째 ? 자리에 "aaa" 대입
			pstmt.setString(2, "111"); // sql의 1번째 ? 자리에 "aaa" 대입
			pstmt.setString(3, "홍길동"); // sql의 1번째 ? 자리에 "aaa" 대입
			pstmt.setString(4, "22"); // sql의 1번째 ? 자리에 "aaa" 대입			
			pstmt.setString(5, "서울시");
			pstmt.setString(6, "a@a.com");
			int count = pstmt.executeUpdate();
			
			System.out.println("정상적으로 insert문을 수행했습니다.");
			System.out.println();
		} catch (SQLException e) {
			System.out.println("sql 문제입니다.");
		}
	}
	
	public void select() {
		String query= "select * from member";
		try {
			pstmt = con.prepareStatement(query);
			ResultSet rs = pstmt.executeQuery();
			
			while(rs.next()) {
			
				String id =rs.getString("ID");
				String password= rs.getString(2);
				String name = rs.getString("NAME");
				int age = rs.getInt(4);
				String address = rs.getString(5);
				String eamil = rs.getString(6);
				
				System.out.printf("아이디 : %8s ,비밀번호 :  %s, 이름 :  %s, 나이 : %d, 주소 :  %s, 이메일 :  %s",id, password,name, age,address,eamil);
				System.out.println();
			}
		} catch (SQLException e) {
			System.out.println("sql 문제입니다.");
		}
	
			
				
	}
	
	
	public void update() {
		
		String sql = "UPDATE member SET address = ? WHERE id = ?";
		try {
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1,"부산시");
			pstmt.setString(2,"aaa");
			pstmt.executeUpdate();
			System.out.println("정상적으로 update 되었습니다.");
			System.out.println();
			
		} catch (SQLException e) {
			System.out.println("sql 문제입니다.");
		}
		
	}
	
	public  void delete() {
		String sql = "DELETE member WHERE id = ?";
		
		try {
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, "aaa");
			pstmt.executeUpdate();
			System.out.println("정상적으로 delete 되었습니다.");
			System.out.println();
			
		} catch (SQLException e) {
			System.out.println("sql 문제입니다.");
		}
		
	}
	
	public static void main(String[] args) {
		
		CRUDtest_Pstmt st = new CRUDtest_Pstmt();
		st.connect();
		st.insert();
		System.out.println("insert 수행 후");

		st.connect();
		st.select();
		
		st.connect();
		st.update();
		System.out.println("update 수행 후");


		st.connect();
		st.select();
		System.out.println();

		
		st.connect();
		st.delete();
		System.out.println("delete 수행 후");
		
		st.connect();
		st.select();
		

	}

}

 

 

질문사항이나 글 내용에 대한 피드백은 언제나 환영입니닷!

'자바 > 오라클 이클립스 연동' 카테고리의 다른 글

DDL!  (0) 2021.03.21
SubQuery  (0) 2021.03.16
오라클 Group by 절과 Join!  (0) 2021.03.15
이클립스 - 오라클 연동  (0) 2021.03.13
오라클 설치  (0) 2021.03.13