[JAVA] 이클립스(Eclipse) + 오라클 11g(Oracle db) JDBC 연동하기 07

2013. 2. 27. 08:41Information Technology/Java

이클립스(Eclipse) 에서 오라클 디비(Oracle 11g)로 JBDC를 이용하여 연동해보겠습니다. 


아래에 있는 여러소스 중에 첫번째인 JdbcOracle.java로 실습을 해보겠습니다.



소스코드예시

package asianaidt.jdbc;

import java.sql.*;

public class JdbcOracle {

	public static void main(String args[]) {
		// connect --> jdbc url
		// jdbc : protocol 이름, oacle: db 이름, thin : 100% 자바로 작성된 드라이버
		// @db server의 ip, 1521:oracle port 번호 => 예) ip : 건물, port번호 : 방번호
		// xe : SID(System IDentifier) 
		
		String connect = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; 	// loop back address : 로컬PC(여기서는 127.0.0.1) 
		// String connect = "jdbc:oracle:thin:@localhost:1521:dada"; // localhost로 써도 무방하다
		
		String user = "scott";
		String passwd = "tiger";

		Connection conn;
		Statement stat;
		try {
			// 1.driver 등록
			Class.forName("oracle.jdbc.driver.OracleDriver");	// 객체 생성하는 또 다른 방법 (Car c = new Car() 와 똑같은 원리)
																					
			// 2.connection 얻기 (네트워크 연결)
			conn = DriverManager.getConnection(connect, user, passwd);
			
			// 3. statement 얻기
			stat = conn.createStatement();
			
			String query = "select * from customer";
			System.out.println(query);
			
			// 4.query 실행 후 결과 집합 얻기
			ResultSet rs =  stat.executeQuery("select * from customer");
			
			// 5.결과집합 처리
			while(rs.next()){
				String num = rs.getString(1);				// 1, 2,3 은 인덱스
				// String num = rs.getString("num");	// 컬럼(num) 으로 줘도 무방하다
				String name = rs.getString(2);
				String address = rs.getString(3);
				
				
				System.out.println(num+"--" + name+"--" + address);
			}
			
			// 6.마무리 작업
			rs.close();
			stat.close();
			conn.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

package asianaidt.jdbc;

import java.sql.*;

public class JdbcSelect {

	public static void main(String args[]) {
		// connect --> jdbc url
		// jdbc : protocol 이름, oacle: db 이름, thin : 100% 자바로 작성된 드라이버
		// @db server의 ip, 1521:oracle port 번호 => 예) ip : 건물, port번호 : 방번호
		// xe : SID(System IDentifier) 
		
		String connect = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; 	// loop back address : 로컬PC(여기서는 127.0.0.1) 
		// String connect = "jdbc:oracle:thin:@localhost:1521:dada"; // localhost로 써도 무방하다
		
		String user = "scott";
		String passwd = "tiger";

		Connection conn;
		Statement stat;
		try {
			// 1.driver 등록
			Class.forName("oracle.jdbc.driver.OracleDriver");	// 객체 생성하는 또 다른 방법 (Car c = new Car() 와 똑같은 원리)
																					
			// 2.connection 얻기 (네트워크 연결)
			conn = DriverManager.getConnection(connect, user, passwd);
			
			// 3. statement 얻기
			stat = conn.createStatement();
			
			// 4.query 실행 후 결과 집합 얻기
			ResultSet rs =  stat.executeQuery("select * from customer where address='seoul' ");
			
			// 5.결과집합 처리
			while(rs.next()){
				String num = rs.getString(1);				// 1, 2,3 은 인덱스
				// String num = rs.getString("num");	// 컬럼(num) 으로 줘도 무방하다
				String name = rs.getString(2);
				String address = rs.getString(3);
				
				
				System.out.println(num+"--" + name+"--" + address);
			}
			
			// 6.마무리 작업
			rs.close();
			stat.close();
			conn.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}



package asianaidt.jdbc;

import java.sql.*;

public class JdbcUpdate {

	public static void main(String args[]) {
		// connect --> jdbc url
		// jdbc : protocol 이름, oacle: db 이름, thin : 100% 자바로 작성된 드라이버
		// @db server의 ip, 1521:oracle port 번호 => 예) ip : 건물, port번호 : 방번호
		// xe : SID(System IDentifier) 
		
		String connect = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; 	// loop back address : 로컬PC(여기서는 127.0.0.1) 
		// String connect = "jdbc:oracle:thin:@localhost:1521:dada"; // localhost로 써도 무방하다
		
		String user = "scott";
		String passwd = "tiger";

		Connection conn;
		Statement stat;
		try {
			// 1.driver 등록
			Class.forName("oracle.jdbc.driver.OracleDriver");	// 객체 생성하는 또 다른 방법 (Car c = new Car() 와 똑같은 원리)
																					
			// 2.connection 얻기 (네트워크 연결)
			conn = DriverManager.getConnection(connect, user, passwd);
			
			// 3. statement 얻기
			stat = conn.createStatement();
			
			// 4.query 실행 후 결과 집합 얻기
			int result =  stat.executeUpdate("update customer set address = 'kyoto' where address='moscow' ");
			
			// 5.결과집합 처리
			System.out.println(result + "개의 행이 수정 되었습니다");
			
			
			// 4.query 실행 후 결과 집합 얻기
			ResultSet rs =  stat.executeQuery("select * from customer");
			
			// 5.결과집합 처리
			while(rs.next()){
				String num = rs.getString(1);				// 1, 2,3 은 인덱스
				// String num = rs.getString("num");	// 컬럼(num) 으로 줘도 무방하다
				String name = rs.getString(2);
				String address = rs.getString(3);
				
				
				System.out.println(num+"--" + name+"--" + address);
			}
			
			// 6.마무리 작업
			rs.close();
			stat.close();
			conn.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

package asianaidt.jdbc;

import java.sql.*;

public class JdbcDelete {

	public static void main(String args[]) {
		// connect --> jdbc url
		// jdbc : protocol 이름, oacle: db 이름, thin : 100% 자바로 작성된 드라이버
		// @db server의 ip, 1521:oracle port 번호 => 예) ip : 건물, port번호 : 방번호
		// xe : SID(System IDentifier) 
		
		String connect = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; 	// loop back address : 로컬PC(여기서는 127.0.0.1) 
		// String connect = "jdbc:oracle:thin:@localhost:1521:dada"; // localhost로 써도 무방하다
		
		String user = "scott";
		String passwd = "tiger";

		Connection conn;
		Statement stat;
		try {
			// 1.driver 등록
			Class.forName("oracle.jdbc.driver.OracleDriver");	// 객체 생성하는 또 다른 방법 (Car c = new Car() 와 똑같은 원리)
																					
			// 2.connection 얻기 (네트워크 연결)
			conn = DriverManager.getConnection(connect, user, passwd);
			
			// 3. statement 얻기
			stat = conn.createStatement();
			
			// 4.query 실행 후 결과 집합 얻기
			int result =  stat.executeUpdate("update customer set address = 'kyoto' where address='moscow' ");
			
			// 5.결과집합 처리
			System.out.println(result + "개의 행이 수정 되었습니다");
			
			
			// 4.query 실행 후 결과 집합 얻기
			ResultSet rs =  stat.executeQuery("select * from customer");
			
			// 5.결과집합 처리
			while(rs.next()){
				String num = rs.getString(1);				// 1, 2,3 은 인덱스
				// String num = rs.getString("num");	// 컬럼(num) 으로 줘도 무방하다
				String name = rs.getString(2);
				String address = rs.getString(3);
				
				
				System.out.println(num+"--" + name+"--" + address);
			}
			
			// 6.마무리 작업
			rs.close();
			stat.close();
			conn.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

package asianaidt.jdbc;

import java.sql.*;

public class JdbcInsert {

	public static void main(String args[]) {
		// connect --> jdbc url
		// jdbc : protocol 이름, oacle: db 이름, thin : 100% 자바로 작성된 드라이버
		// @db server의 ip, 1521:oracle port 번호 => 예) ip : 건물, port번호 : 방번호
		// xe : SID(System IDentifier)

		String connect = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; // loop back
																// address :
																// 로컬PC(여기서는
																// 127.0.0.1)
		// String connect = "jdbc:oracle:thin:@localhost:1521:dada"; //
		// localhost로 써도 무방하다

		String user = "scott";
		String passwd = "tiger";

		Connection conn;
		Statement stat;
		try {
			// 1.driver 등록
			Class.forName("oracle.jdbc.driver.OracleDriver"); // 객체 생성하는 또 다른 방법
																// (Car c = new
																// Car() 와 똑같은
																// 원리)

			// 2.connection 얻기 (네트워크 연결)
			conn = DriverManager.getConnection(connect, user, passwd);

			// 3. statement 얻기
			stat = conn.createStatement();

			// 4.query 실행 후 결과 집합 얻기

			// String query = "INSERT INTO customer values(" + args[0] + "," +
			// args[1] + "," + args[2] + ")";

			String query = "insert into customer values(" + args[0] + ","
					+ args[1] + "," + args[2] + ")";

			// int result=
			// stat.executeUpdate("INSERT INTO customer (num,name,address) values(args[0] ,args[1], args[2]");

			System.out.println(query);
			int strresult = stat.executeUpdate(query);
			

			// 4.query 실행 후 결과 집합 얻기
			ResultSet rs = stat.executeQuery("select * from customer");

			// 5.결과집합 처리
			while (rs.next()) {
				String num = rs.getString(1); // 1, 2,3 은 인덱스
				// String num = rs.getString("num"); // 컬럼(num) 으로 줘도 무방하다
				String name = rs.getString(2);
				String address = rs.getString(3);

				System.out.println(num + "--" + name + "--" + address);
			}

			// 6.마무리 작업
			 rs.close();
			 stat.close();
			 conn.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

package asianaidt.jdbc;

import java.sql.*;

public class JdbcPreinsert {

	public static void main(String args[]) {
		// connect --> jdbc url
		// jdbc : protocol 이름, oacle: db 이름, thin : 100% 자바로 작성된 드라이버
		// @db server의 ip, 1521:oracle port 번호 => 예) ip : 건물, port번호 : 방번호
		// xe : SID(System IDentifier)

		String connect = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; // loop back
																// address :
																// 로컬PC(여기서는
																// 127.0.0.1)
		// String connect = "jdbc:oracle:thin:@localhost:1521:dada"; //
		// localhost로 써도 무방하다

		String user = "scott";
		String passwd = "tiger";

		Connection conn;
		// Statement stat;
		PreparedStatement pstat;

		try {
			// 1.driver 등록
			Class.forName("oracle.jdbc.driver.OracleDriver"); // 객체 생성하는 또 다른 방법
																// (Car c = new
																// Car() 와 똑같은
																// 원리)

			// 2.connection 얻기 (네트워크 연결)
			conn = DriverManager.getConnection(connect, user, passwd);

			pstat = conn.prepareStatement("insert into customer values(?,?,?)");	// DB로 쿼리문을 보냄, ?는 정해지지 않은값
			// 한번 사용한 쿼리문을 재사용하기 떄문에 속도가 빠르다.
			
			pstat.setString(1, args[0]);		
			pstat.setString(2, args[1]);
			pstat.setString(3, args[2]);
			
			// 3. statement 얻기
			// stat = conn.createStatement();
			int cnt = pstat.executeUpdate();

			System.out.println(cnt + "row inserted....");

			pstat.close();
			conn.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

package asianaidt.jdbc;

import java.sql.*;

public class JdbcPreUpdate {

	public static void main(String args[]) {
		// connect --> jdbc url
		// jdbc : protocol 이름, oacle: db 이름, thin : 100% 자바로 작성된 드라이버
		// @db server의 ip, 1521:oracle port 번호 => 예) ip : 건물, port번호 : 방번호
		// xe : SID(System IDentifier)

		String connect = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; // loop back
																// address :
																// 로컬PC(여기서는
																// 127.0.0.1)
		// String connect = "jdbc:oracle:thin:@localhost:1521:dada"; //
		// localhost로 써도 무방하다

		String user = "scott";
		String passwd = "tiger";

		Connection conn;
		// Statement stat;
		PreparedStatement pstat;

		try {
			// 1.driver 등록
			Class.forName("oracle.jdbc.driver.OracleDriver"); // 객체 생성하는 또 다른 방법
																// (Car c = new
																// Car() 와 똑같은
																// 원리)

			// 2.connection 얻기 (네트워크 연결)
			conn = DriverManager.getConnection(connect, user, passwd);

			pstat = conn.prepareStatement("delete from customer where num=?"); // DB로
																				// 쿼리문을
																				// 보냄,
																				// ?는
																				// 정해지지
																				// 않은값
			// 한번 사용한 쿼리문을 재사용하기 떄문에 속도가 빠르다.

			pstat.setString(1, args[0]);

			// 3. statement 얻기
			// stat = conn.createStatement();
			int cnt = pstat.executeUpdate();

			System.out.println(cnt + "row deleted....");

			pstat.close();
			conn.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

package asianaidt.jdbc;

import java.sql.*;

public class JdbcPreDelete {

	public static void main(String args[]) {
		// connect --> jdbc url
		// jdbc : protocol 이름, oacle: db 이름, thin : 100% 자바로 작성된 드라이버
		// @db server의 ip, 1521:oracle port 번호 => 예) ip : 건물, port번호 : 방번호
		// xe : SID(System IDentifier)

		String connect = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; // loop back
																// address :
																// 로컬PC(여기서는
																// 127.0.0.1)
		// String connect = "jdbc:oracle:thin:@localhost:1521:dada"; //
		// localhost로 써도 무방하다

		String user = "scott";
		String passwd = "tiger";

		Connection conn;
		Statement stat;
		PreparedStatement pstat;

		try {
			// 1.driver 등록
			Class.forName("oracle.jdbc.driver.OracleDriver"); // 객체 생성하는 또 다른 방법
																// (Car c = new
																// Car() 와 똑같은
																// 원리)

			// 2.connection 얻기 (네트워크 연결)
			conn = DriverManager.getConnection(connect, user, passwd);

			// pstat = conn.prepareStatement("delete from customer where num=?"); // DB로
																				// 쿼리문을
																				// 보냄,
																				// ?는
																				// 정해지지
																				// 않은값
			// 한번 사용한 쿼리문을 재사용하기 떄문에 stat보다 속도가 빠르다.
			// Statment -> PreparedStatement -> CallableStatment 
			// 보통

			// pstat.setString(1, args[0]);
			
			stat = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);
			
			ResultSet rs =  stat.executeQuery("select * from customer");
		
		
			while(rs.next()){
				String num = rs.getString(1);				// 1, 2,3 은 인덱스
				// String num = rs.getString("num");	// 컬럼(num) 으로 줘도 무방하다
				String name = rs.getString(2);
				String address = rs.getString(3);
				
				
				System.out.println(num+"--" + name+"--" + address);
			}
			System.out.println("========================");
			
			
			while(rs.previous()){
			    String num = rs.getString(1);
			    String name = rs.getString(2); //rs.getString("name");
			    String address = rs.getString(3);
			    System.out.println(num+"--"+name+"--"+address);
			   }
			System.out.println("========================");

			// 3. statement 얻기
			// stat = conn.createStatement();
			// int cnt = pstat.executeUpdate();

			// System.out.println(cnt + "row deleted....");

			rs.close();
			stat.close();
			// pstat.close();
			conn.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

package asianaidt.jdbc;

import java.sql.*;

public class JbdcOracleMeta {

	public static void main(String args[]) {
		// connect --> jdbc url
		// jdbc : protocol 이름, oacle: db 이름, thin : 100% 자바로 작성된 드라이버
		// @db server의 ip, 1521:oracle port 번호 => 예) ip : 건물, port번호 : 방번호
		// xe : SID(System IDentifier)

		String connect = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; // loop back
																// address :
																// 로컬PC(여기서는
																// 127.0.0.1)
		// String connect = "jdbc:oracle:thin:@localhost:1521:dada"; //
		// localhost로 써도 무방하다

		String user = "scott";
		String passwd = "tiger";

		Connection conn;
		Statement stat;
		try {
			// 1.driver 등록
			Class.forName("oracle.jdbc.driver.OracleDriver"); // 객체 생성하는 또 다른 방법
																// (Car c = new
																// Car() 와 똑같은
																// 원리)

			// 2.connection 얻기 (네트워크 연결)
			conn = DriverManager.getConnection(connect, user, passwd);

			// 3. statement 얻기
			stat = conn.createStatement();

			String query = "select * from customer";
			System.out.println(query);

			// 4.query 실행 후 결과 집합 얻기
			ResultSet rs = stat.executeQuery("select empid, fname, salary from emp");
			ResultSetMetaData rsmd = rs.getMetaData(); // MetaData 데이터의 데이터(즉,
														// 컬럼 ex-num, name,
														// address)
			int count = rsmd.getColumnCount(); // 컬럼갯수 확인

			for (int i = 1; i <= count; i++) {
				System.out.print(rsmd.getColumnName(i) + "\t\t");

			}
			System.out.println();


			while (rs.next()) {
				for (int i = 1; i <= count; i++) {
					System.out.print(rs.getString(i)+"\t\t");
				}	
				System.out.println();
	
				
				// System.out.println(num + "--" + name + "--" + address);
			}

			// 6.마무리 작업
			rs.close();
			stat.close();
			conn.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}



1. Window > show view > other

 


2. Data Source Explorer 선택



3. 마우스 오른쪽 클릭 > New






4. Oracle 선택






5. oracle 11 버전 선택








6. jar를 ojdbc5.jar로 변경



7. 아래와 같이 설정



8. 확인



9. SID xe로 변경



10. Summary 확인



11. 아래와 같이 xe 가 생성됨



12. 마우스 오른쪽 > Generate DDL 클릭













14. Folder > Browse 클릭




















































이상 이클립스(Eclipse) 에서 오라클 디비(Oracle 11g)에 JBDC를 이용하여 연동해았습니다.



이클립스(Eclipse) 에서 오라클 디비(Oracle 11g)로 JBDC를 이용하여 연동해보겠습니다. 


아래에 있는 소스  JdbcOracleMeta.java 로 실습을 해보겠습니다.

package asianaidt.jdbc;

import java.sql.*;
import java.util.Iterator;

public class JdbcOracleMeta{

	public static void main(String args[]) {

		String connect = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
		String user = "scott";
		String passwd = "tiger";

		Connection conn;
		Statement stat;
		try {
			//1.driver 등록
			Class.forName("oracle.jdbc.driver.OracleDriver");	//객체 생성
			
			//2.connection 얻기
			conn = DriverManager.getConnection(connect, user, passwd);
			
			
			//3. statement 얻기
			stat = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);
			
		
			//4.query 실행 후 결과 집합 얻기
			ResultSet rs = stat.executeQuery("select empid, fname, salary from emp");
			
			ResultSetMetaData rsmd = rs.getMetaData();
			
			
			
			//5.결과집합 처리
			
			for (int i = 1; i <= rsmd.getColumnCount(); i++){
				System.out.print(rsmd.getColumnName(i)+"\t\t");
			}
			System.out.println("==================================");
			
			while(rs.next()){
				
				for (int i = 1; i <= rsmd.getColumnCount(); i++) {
						String tmp = rs.getString(i);
						System.out.print(tmp + "\t\t");
				}
				System.out.println();
			}
			
			System.out.println("================================================");
			
			
			
			
			//6.마무리 작업
			rs.close();
			stat.close();
			conn.close();
			
		} catch ( Exception e ) {			
			e.printStackTrace();
		}
	}
}

이클립스(Eclipse) 에서 오라클 디비(Oracle 11g)에 JBDC를 이용한 결과 화면입니다.