2020.12.17 일지 - JDBC

0후·2020년 12월 17일
0

비트캠프

목록 보기
44/112

이클립스 설치 및 JDBC 연동

JDBC (Java DataBase Connectivity) 란 자바에서 DB 프로그래밍을 하기 위해 사용되는 API

  1. 이클립스 사이트에서 Eclipse IDE for Java Developers를 다운로드 받는다.
  2. workspace 설정 시 이클립스 다운로드 받은 폴더에 workspace 지정해준다. 그래야 나중에 한꺼번에 삭제 시 workspace도 삭제할 수 있기 때문이다.
  3. NEW>Java Project 생성
  4. 프로젝트 명에 대고 마우스 우클릭 후 Properties 클릭
  5. Java Build Path에서 Libraries 확인하면 java 버전하고 빌드 패스(=클래스 패스) 할 것들이 나온다. 우리는 이식성 좋게 프로젝트 내에 드라이버(jar) 파일을 같이 넣어둘 것이므로, 일단 jar 파일을 드래그 앤 드랍해줘서 옮겨온다.

  6. Java Build Path>Libraries>ADD jars 클릭
  7. jar파일 클릭 후 OK 누른 뒤 Apply and Close 해준다.

Jdbctest.java

import java.sql.*;

class Jdbctest {
	Connection con;
	Statement stmt;
	ResultSet rs;
	String url = "jdbc:oracle:thin:@127.0.0.1:1521:JAVA";
	String usr = "JDBC";
	String pwd = "JAVA";
	Jdbctest(){
		// (1) 드라이버 로딩
		try{
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("드라이버 로딩 성공");
		}catch(ClassNotFoundException cnfe) {
			System.out.println("드라이버 로딩 실패");
		}
		// (2) DB와 연결
		try{
			con = DriverManager.getConnection(url, usr, pwd);
			System.out.println("DB와 연결 성공");
		}catch(SQLException se) {
			System.out.println("DB와 연결 실패");
		}
		// (3) Statement 생성
		try {
			stmt = con.createStatement();
			System.out.println("stmt와 생성 성공");
		}catch(SQLException se) {
			System.out.println("stmt와 생성 실패");
		}
		
		//createT();
		//dropT();
		createTnoExist();
		
		//insertD(10, "홍길동", "01012341234");
		//insertD(20, "강감찬", "01012341235");
		//insertD(30, "이순신", "01012341236");
		
		//updateD(10, "이소담", "01098764423");
		//updateD(30, "성진희", "01029874423");
		
		selectD();
		
	}
	String tname = "JDBCT";
	void createT() {
		String sql = "create table " + tname + 
				"(NO number(2) primary key, NAME varchar2(10), PHONE varchar2(11), RDATE date)";
	
		// (4) Statement 실행
		try {
			stmt.execute(sql);
			System.out.println(tname+" 테이블 생성 성공");
		}catch(SQLException se) {
			System.out.println(tname+" 테이블 생성 실패 se:"+se);
		}
	}
	void dropT() {
		String sql = "drop table " +tname;
		// (5) Statement 삭제
		try {
			stmt.execute(sql);
			System.out.println(tname+" 테이블 삭제 성공");
		}catch(SQLException se) {
			System.out.println(tname+" 테이블 삭제 실패 se:"+se);
		}
	}
	void createTnoExist() {
		ResultSet rs = null;
		String sql = "select TABLE_NAME from user_tables where TABLE_NAME='"+tname+"'";
	
		try {
			rs = stmt.executeQuery(sql);
			boolean flag = rs.next();
			if(!flag) createT();
			System.out.println("조회 성공");
		}catch(SQLException se) {
		}finally {
			try {
				rs.close();
			}catch(SQLException se) {
				System.out.println("조회 실패" + se);
			}
		}
	}
	void insertD(int no, String name, String phone) {
		String sql = "insert into "+tname+" values("+no+", '"+name+"', '"+phone+"', SYSDATE)";
	
		try {
			int i = stmt.executeUpdate(sql); // 내용을 바꾸는 건 executeUpdate, 이는 Update가 되어진 갯수를 리턴함 1개가 업데이트 됐으면 return값은 1이 된다는 말
			if(i>0) System.out.println(i+"개의 행이 입력 완료");
			else System.out.println("입력 실패");
		}catch(SQLException se) {
			System.out.println("입력 실패 se:"+ se);
		}
	}
	void updateD(int no, String name, String phone) {
		String sql = "update "+tname+" set name='"+name+"', phone='"+phone+"' where NO="+no;
	
		try {
			int i = stmt.executeUpdate(sql);
			if(i>0) System.out.println(i+"개의 행이 수정 완료");
			else System.out.println("수정 실패");
		}catch(SQLException se) {
			System.out.println("수정 실패 se:"+ se);
		}
	}
	void deleteD(int no) {
		String sql = "delete from "+tname+" where NO="+no;
		
		try {
			int i = stmt.executeUpdate(sql);
			if(i>0) System.out.println(i+"개의 행이 삭제 완료");
			else System.out.println("삭제 실패");
		}catch(SQLException se) {
			System.out.println("삭제 실패 se:"+ se);
		}
	}
	void selectD() {
		ResultSet rs = null;
		String sql = "select * from " +tname+" order by NO";
	
		try {
			rs = stmt.executeQuery(sql);
			int count = 0;
			System.out.println("NO\tNAME\tPHONE\t\tRDATE");
			while(rs.next()) { // 행이 계속 다음으로 넘어가면서 EOF(행이 없는 경우)에 다다를 경우 false, 행이 있으면 true
				int no = rs.getInt(1);
				String name = rs.getString(2);
				String phone = rs.getString(3);
				Date rdate = rs.getDate(4);
				System.out.println(no+"\t"+name+"\t"+phone+"\t"+rdate);
				count++;
			}
			System.out.println("총 "+count+"개 데이터 검색 완료");
		}catch(SQLException se) {
			
		}finally {
			try {
				rs.close();
			}catch(SQLException se) {
			}
		}
	}
	public static void main(String[] args) {
		Jdbctest jt = new Jdbctest();
	}
}

JDBC 순서

1) 드라이버 로딩

Class.forName("oracle.jdbc.driver.OracleDriver");

2) Connection 생성 (DBMS와 연결)

String url = "jdbc:oracle:thin:@127.0.0.1:1521:JAVA";
String usr = "scott";
String pwd = "tiger";
Connection con = DriverManager.getConnection(url, usr, pwd);

3) Statement 생성

Statement stmt = con.createStatement();

4) Statement 실행

stmt.execute(DDL);
int i = stmt.executeUpdate(DML);
ResultSet rs = stmt.executeQuery(DQL);

5) ResultSet 생성( 데이터추출 )

ResultSet rs = stmt.executeQuery(DQL);
rs.next();
XXX value = rs.getXXX(); 

6) 연결객체 닫기

rs.close();
stmt.close();
con.close();
profile
휘발방지

0개의 댓글