프로그래밍/DBMS

DBMS 5일차 -JDBC

윤도ri 2021. 12. 15. 00:14

>JDBC(Java DataBase Connectivity)

-자바에서 데이터베이스에 접속할 수 있도록 해주는 자바 API

(자바와 데이터베이스에 다리를 하나 놓고 택배기사가 물건을 옮기도록 하여 전달한다.)

 

:라이브러리 위치
C:\program Files (x86)\MySQL\Connector J 8.0

 

<과정>

1.설계도 읽기 

Class.forName("com.mysql.cj.jdbc.Driver");

-->try, catch로 예외처리를 해주자

*ClassNotFoundException(드라이버 로딩 실패)

 

2.내가 넣으려는 database의 url , 접속하기 위한 mysql 아이디,비밀번호 적어두기

= 다리짓기: 다리 지을 위치, 방법 정하기 

 

String url = "jdbc:mysql://localhost:3307/testworld";
String user = "root";
String password = "1234";

 

3.설치되어 있는 Driver를 통해서 Connection 객체 생성

= 지어진 다리 돌려받기 

Connection conn = DriverManager.getconnection(url, user, password);

 

4.connection 객체를 통해 PreparedStatement 객체 생성

= 다리 위 왔다 갔다할 택배 차 뽑기 

PreparedStatement ps = conn.prepareStatement(sql);

 

-->try, catch로 예외처리를 해주자

*SQLException(데이터베이스 연결 실패)


5.SQL문 수행 후 결과(SELECT 문이라면)를 ResultSet 객체로 받기

ResultSet rs = ps.executeQuery();

 

6.

1) data검색해오는 경우

  (1)String sql = "SELECT NOW() FROM dual";

  (2)next(), getString() 사용해서 찾아오기 

   if( rs.next() ){

       String data = rs.getString("NOW()");

       syso(data);

   }else{

       syso("데이터가 존재하지 않습니다.");

  }

 

2) data넣는 경우

  (1) sql = "INSERT INTO test(strdata, timedata) VALUES(?,?)";

  (2) ps = conn.prepareStatement(sql);

  (3) ps.setString(1, "apple");
      ps.setString(2, "2021-12-13 10:36:52");

  (4) int result = ps.executeUpdate();

     if(result ==1) {
                   System.out.println("데이터 추가 성공!");
    }else {
                    System.out.println("데이터 추가 실패!");
                 }

    //INSERT, UPDATA,DELETE : executeUpdata() - 수정된 행의 수 return
    //SELECT  :executeQuery() - 검색 결과테이블 return 

 

예제1) intdata, strdata, timedata 를 넣는 경우

   sql = "SELECT * FROM test";
   ps = conn.prepareStatement(sql);
   rs= ps.executeQuery();

 

while(rs.next()){
int intdata = rs.getInt("intdata");
//데이터를 받아올 때에는 컬럼의 위치(순번)로도 가능하다.
String strdata = rs.getString(2);
String timedata = rs.getString("timedata");


System.out.println(intdata+"/"+ strdata +"/" + timedata);
}

 

예제2) 문자열 하나 입력받아서 데이터도 추가하고 기존에 추가된 값을 수정도 해야하는 경우

매번 새로운 jdbc 를 연결할때마다 다리를 부수고 다시 짓고 다시 택배차를 뽑고 반복을 해야한다.

그러므로 이 과정을 클래스로 묶어놓으면 쓰고 싶을때마다 사용할 수 있다.

 

1. 라이브러리에 있는 Connection  을 import 한다 

2. Connection 타입 conn 을 자유자제로 쓰기 위해 private static 으로 선언

    : private static Connection conn;

3. Connection 타입 getConnection() 메소드 만들기 

4. conn 객체안에 값이 없으면(=null) 다리 짓고 택배차 뽑는 일 하도록 만들기 

 

5.삽입하는 메소드랑 변경하는 메소드 만들어서 main 메소드에서 쓰기 위해서 

TestDAO class 를 만들어준다. 

 

 

 

 

 

 

 

 

'프로그래밍 > DBMS' 카테고리의 다른 글

DBMS 4일차 - DBMS 문법  (0) 2021.12.10
DBMS 3일차 - 정규화,DML  (0) 2021.12.09
DBMS 2일차 -데이터 베이스, 테이블, 모델링  (0) 2021.12.08
DBMS 1일차 -DBMS  (0) 2021.12.08