728x90
정의 : DBMS 종류에 상관없이 데이터베이스를 연동하기 위한 API

데이터베이스 접근시 문제점
  -  DBMS 종류가 다양하고, 구조와 특징이 모드 틀리다.
  -  DBMS 종류만큼 데이터베이스 접근방법을 모두 알아야 한다.

문제점 해결
  -  모든 DBMS에서 공통적으로 사용할 수 있는 인터페이스와 클래스를 정의하고 실제 구현은 DBMS vendor에게
     구현하도록 함.
  -  DBMS vendor에서 구현한 클래스집합을 'Driver' 라고 한다. 

JDBC 인터페이스는 SUN에서 제공 ( java.sql.*;)
  -  드라이버는 클래스다.

Java에서 DB사용

  -  DBMS를 설치한다
  -  드라이버 다운로드 후  jar 파일을  C:\Program Files\Java\jdk1.5.0_09\jre\lib\ext에 넣는다.
      오라클 드라이버는 C:\oracle\product\10.2.0\db_1\jdbc\lib 폴더안에 ojdbc14.jar

자바 어플리케이션 작업
  1. import java.sql.*;
  2. 드라이버 로딩 (Vender에서 제공한 클래스를 객체 생성하여 메모리에 Load )
  3. Connection (디비연결)
  4. Statement 생성 (쿼리문 사용하기 위해서)  -- 여기까지는 다 똑같음..
  5. Query문 작성 (select, insert, update, delete)
  6. Query문 전송 select -> executeQuery()         insert, update ,delete -> executeUpdate()
  7. SELECT 문인 경우 결과값 얻기
  8. 결과값 출력.
  9. close 작업(rs.close(), stmt.close(), con.close()  역순으로 )
Access
 드라이버로딩 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
 Connection 생성하기 : Connection con  = DriverManager.getConnection(url,user,pwd)
 URL : "jdbc:odbc:DB명"     // 디비가 있는곳을 말함.

Oracle
 드라이버로딩 : Class.forName("oracle.jdbc.driver.OracleDriver")
  Connection  생성하기 : Connection con  = DriverManager.getConnection(url,user,pwd)
  URL :  URL = "jdbc:oracle:thin:@localhost:1521:orcl";

MySql
 드라이버로딩 : Class.forName("com.mysql.jdbc.Driver")
 Connection 생성하기 : Connection con = DriverManager.getConnection(url,user,pwd)
 URL : "jdbc:mysql://localhost:3306/mydb"

Oracle

import java.sql.*;  // 1. java.sql 패키지를 import 한다.

class MemberTest
{
 private static final String driver = "oracle.jdbc.driver.OracleDriver";
 private static final String url = "jdbc:oracle:thin:@211.183.7.137:1521:orcl";
 private static final String user = "scott";
 private static final String pwd = "tiger";
 
 public static void main(String args[])
 {
  Connection conn;
  Statement stmt;
  ResultSet rs;
  
  try
  {
   Class.forName(driver); // 2. 드라이버 로딩 
   System.out.println("Oracle드라이버 로딩 성공");
   conn = DriverManager.getConnection(url,user,pwd); // 3. Connection 얻기
   System.out.println("Connectoin 생성 성공");
   stmt = conn.createStatement();
   System.out.println(" Statement 생성 성공");  // 4. Statement 생성
   String query = "INSERT INTO member VALUES('이철수','166','45',18,'m')";// 5. Query문 작성
   System.out.println(query);
   stmt.executeUpdate(query); // 6. Query문 전송
   String query2 = "select * from member"; // 5. Query문 작성
   System.out.println(query2);
   rs = stmt.executeQuery(query2);  // 6. Query문 전송
   while(rs.next()) // 7.result를 얻는다.
   {
    System.out.print("  이름 :>>"+rs.getString("name")); // 8. ResultSet 객체 접근 getter()메서드로 값을 얻음.  
    // = System.out.print("  이름 :>>"+rs.getString(1));
    System.out.print("  키 :>>"+rs.getString("height"));
    System.out.print("  체중 :>>"+rs.getString("weight"));
    System.out.print("  나이 :>>"+rs.getString("age"));
    System.out.println("  성별 :>>"+rs.getString("sex"));
    
   }
   rs.close();  // 9. 역순으로 종료.
   stmt.close();
   conn.close();
  }
  catch(ClassNotFoundException e)
  {
   e.printStackTrace();
  }
  catch(SQLException e)
  {
   e.printStackTrace();
  }
 }
}

insert, update, delete는 executeUpdate() 메서드를 사용하고 , select문은 executeQuery() 메서드를 사용한다.

MySql

import java.sql.*;

class MySql
{
 private static final String driver = "com.mysql.jdbc.Driver";
 private static final String url = "jdbc:mysql://localhost:3306/mydb";
 private static final String user = "root";
 private static final String pwd = "12345";
 
 public static void main(String args[])
 {
  Connection conn;
  Statement stmt;
  ResultSet rs;
  
  try
  {
   Class.forName(driver); // 2. 드라이버 로딩 
   System.out.println("MySql드라이버 로딩 성공");
   conn = DriverManager.getConnection(url,user,pwd); // 3. Connection 얻기
   System.out.println("Connectoin 생성 성공");
   stmt = conn.createStatement();
   System.out.println(" Statement 생성 성공");  // 4. Statement 생성
   String query = "INSERT INTO member VALUES('이철수','166','45',18,'m')";// 5. Query문 작성
   System.out.println(query);
   stmt.executeUpdate(query); // 6. Query문 전송
   String query2 = "select * from member"; // 5. Query문 작성
   System.out.println(query2);
   rs = stmt.executeQuery(query2);  // 6. Query문 전송
   while(rs.next()) // 7.result를 얻는다.
   {
    System.out.print("  이름 :>>"+rs.getString("name")); // 8. ResultSet 객체 접근 getter()메서드로 값을 얻는다. 
    // = System.out.print("  이름 :>>"+rs.getString(1));
    System.out.print("  키 :>>"+rs.getString("height"));
    System.out.print("  체중 :>>"+rs.getString("weight"));
    System.out.print("  나이 :>>"+rs.getString("age"));
    System.out.println("  성별 :>>"+rs.getString("sex"));
    
   }
   rs.close();  // 9. 역순으로 종료.
   stmt.close();
   conn.close();
  }
  catch(ClassNotFoundException e)
  {
   e.printStackTrace();
  }
  catch(SQLException e)
  {
   e.printStackTrace();
  }
 }
}

+ Recent posts