Backend

[JDBC] 사용방법

연_우리 2022. 1. 26. 19:14
반응형

JDBC : JAVA DataBase Connectivity

기존 자바에서는 DB를 조작하기 위해서 JDBC API를 사용했다.

JDBC는 데이터베이스 종류에 상관없이 JDBC만 알면 

어떤 데이터베이스를 사용하더라도 일관된 코드로 작성할 수 있다.

 

 

JDBC 사용방법

 

1. JDBC DRIVER 로드 : Driver클래스를 JVM에 로딩
Class.forName(driver);

 


2. DB 연결 : Driver객체를 다루는 DriverManager를 통해 DB연결
Connection con = DriverManager.getConnection(url, user, password);

 


3-1. 데이터 삽입
String insertSql = "INSERT INTO member(name, age) VALUES (?,?)";
PreparedStatement pstmt = con.prepareStatement( insertSql );   
    pstmt.setString(2, "Lisa");
    pstmt.setInt(3, 20);
int count = pstmt.executeUpdate(); 

 

 PreparedStatement pstmt = con.prepareStatement(String sql);
PreparedStatement는 insert, update, delete 등 동적으로 값을 할당할 때 사용한다.
(동적으로 값을 할당할 수 있게 미리 준비하겠다)

int count = pstmt.executeUpdate();
insert, update, delete 등은 반환되는 데이터가 없으므로 몇개의 row가 변경되었는지 count수를 반환해준다.

 


3-2. 데이터 조회
String selectSql = "SELECT * FROM member";
Statement stmt = con.createStatement();   
ResultSet rs = stmt.executeQuery( selectSql ); 
while(rs.next()){ 
     int id = rs.getInt("id");
     String name = rs.getString("name");
     int age = rs.getInt(3);
}

 

 Statement stmt = con.createStatement();
Statement는 select문처럼 정적인 쿼리를 실행할 때 사용한다.
 
 ResultSet rs = stmt.executeQuery(String sql);
반환되는 데이터를 ResultSet 객체에 담는다. 테이블형식처럼 들어가있다고 생각하자.

 while(rs.next()){  ~  }
ResultSet은 현재 행을 나타내는 cursor개념이 있고, next() 메소드를 통해 cursor를 다음 행으로 이동시킨다.
반복문 안에서 현재 행의 값을 가져온다.

ResultSet의 칼럼은 0부터가 아닌 1부터 시작한다.

 

//https://mariadb.org/download/?t=connector&p=connector-java&r=2.7.3&os=source&pkg=java-source-jar&m=yongbok 에서 jar 파일 다운 가능

// 드라이버명과 url은 각 DBMS마다 다르다. 구글에 검색하자
final String driver = "org.mariadb.jdbc.Driver";
        		// Oracle : oracle.jdbc.driver.OracleDriver
        		// MySQL : com.mysql.jdbc.Driver
final String url = "jdbc:mariadb://localhost:3306/testdb";
			// Oracle : jdbc:oracle:thin:@호스트명:포트번호:SID
        		// MySQL : jdbc:mysql://호스트명[:포트번호]/데이터베이스명
final String user = "root";
final String password = "1234";

try {
    // 1. JDBC DRIVER 로드 : Driver클래스를 JVM에 로딩
    Class.forName(driver);

    // 2. DB 연결 : Driver객체를 다루는 DriverManager를 통해 DB연결
    Connection con = DriverManager.getConnection(url, user, password);


    //데이터 삽입
    String insertSql = "INSERT INTO member(name, age) VALUES (?,?)";
    PreparedStatement pstmt = con.prepareStatement(insertSql);
    pstmt.setString(2, "Lisa");
    pstmt.setInt(3, 20);
    int count = pstmt.executeUpdate();
    /*  PreparedStatement pstmt = con.prepareStatement(String sql);
        PreparedStatement는 insert, update, delete 등 동적으로 값을 할당할 때 사용한다.
        (동적으로 값을 할당할 수 있게 미리 준비하겠다)

        int count = pstmt.executeUpdate();
        insert, update, delete 등은 반환되는 데이터가 없으므로 몇개의 row가 변경되었는지 count수를 반환해준다.
    */


    //데이터 조회
    String selectSql = "SELECT * FROM member";
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(selectSql);
    while(rs.next()){
        int id = rs.getInt("id");
        String name = rs.getString("name");
        int age = rs.getInt(3);
    }
    /*  Statement stmt = con.createStatement();
        Statement는 select문처럼 정적인 쿼리를 실행할 때 사용한다.

        ResultSet rs = stmt.executeQuery(String sql);
        반환되는 데이터를 ResultSet 객체에 담는다. 테이블형식처럼 들어가있다고 생각하자.

        while(rs.next()){  ~  }
        ResultSet은 현재 행을 나타내는 cursor개념이 있고, next() 메소드를 통해 cursor를 다음 행으로 이동시킨다.
        반복문 안에서 현재 행의 값을 가져온다.

        ResultSet의 칼럼은 0부터가 아닌 1부터 시작한다.
    */


    rs.close();
    stmt.close();
    pstmt.close();
    con.close();
} catch (Exception e) {
    e.printStackTrace();
}

 

반응형
  • 네이버 블러그 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 구글 플러스 공유하기
  • 카카오톡 공유하기