JDBC 사용하기

losuif·2021년 7월 25일
0

학원 복습 - JDBC

목록 보기
2/6
post-thumbnail

👩🏼‍💻 JDBC 사용하기



① MySQL에서 데이터베이스 만들기




② Driver 로딩 > 객체생성

import java.sql.DriverManager;
import java.sql.SQLException;

public class Main {

	public static void main(String[] args) {

		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			//checked exception try-catch문 반드시 사용

		} catch(ClassNotFoundException e){
			System.out.println(e.getMessage());
           	  // 드라이버 클래스를 찾지 못한다면 오류 발생
		} catch(SQLException e) {		
			System.out.println(e.getMessage());
          	  // DB 접속정보가 틀렸다면 오류 발생
		}
		
	}

}

🤔 Class.forName("com.mysql.cj.jdbc.Driver");은 어디서 왔을까?


③ DB에 접속하기

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Main {

	public static void main(String[] args) {

		Connection  conn = null;
      	        // DB접속 => DB의 URL, Port, ID, PW, etc...
		
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			
			String url = "jdbc:mysql://localhost:3308/jdbc_test?";
                                      /* localhost 대신 127.0.0.1 사용 가능
                                       * 3308(기본 3306) : 설치 시 지정한 포트 번호
                                       * 맨 뒤 : 연결 할 DB 이름 */

			url += "useSSL=false&"; 	     // 인증방식 설정 : SSL로 접속할 것인가?
			url += "serverTimezone=Asia/Seoul&"; // 서버시간 설정						
            					     	     // or "serverTimezone=UTC&";
			url += "useUnicode=true&";	     // 유니코드 사용여부 설정
			url += "characterEncoding=UTF-8";    // 인코딩 방식 지정 
           	        url += "allowPublicKeyRetrieval=true"; // mysql 연동 시 에러 처리
                  					       // 8.0 이후 설정 추가해야 오류 발생하지 X
			
			String uid = "root";
			String upw = "1234";
            
           		 /* url : MySQL DB의 접속 경로
			  * uid : MySQL DB의 접속 계정 (사용자아이디)
			  * upw : MySQL DB의 접속 비밀번호 (인증코드) */ 
			conn = DriverManager.getConnection(url, uid, upw);
            
            
		} catch(ClassNotFoundException e){
			System.out.println(e.getMessage());
		} catch(SQLException e) {		
			System.out.println(e.getMessage());
		}
		
	}

}

④ SQL구문 실행, 데이터 불러오기

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {

	public static void main(String[] args) {

		Connection 	conn 	= null;
		Statement	stmt 	= null;
       	        // 쿼리 사용을 위함
		ResultSet	res 	= null;
		// Statement를 통해 반환된 데이터 : method or getter 사용
        
        
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			
			String url = "jdbc:mysql://localhost:3308/jdbc_test?";
			url += "useSSL=false&"; 			
			url += "serverTimezone=Asia/Seoul&"; 
			url += "useUnicode=true&";			
			url += "characterEncoding=UTF-8"; 
			
			String uid = "root";
			String upw = "1234";
			
			conn = DriverManager.getConnection(url, uid, upw);
			
			
			stmt = conn.createStatement();
			String sql = "select * from data_sample";
			res = stmt.executeQuery(sql);
			
			System.out.println("번호   이름");
			System.out.println("-----------");
			
			while (res.next()) {
				
				int no = res.getInt("no");
				String name = res.getString("name");
				System.out.print(no + "    ");
				System.out.println(name);
			}
			
		} catch(ClassNotFoundException e){
			System.out.println(e.getMessage());
		} catch(SQLException e) {		
			System.out.println(e.getMessage());
		}
		
	}

}

🤔 while (res.next()) {...}
: Table에서 다음 행이 있다면 true를, 없다면 false를 반환


⑤ DB 연결 종료하기

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {

	public static void main(String[] args) {

		Connection 	conn 	= null;
		Statement	stmt 	= null;
		ResultSet	res 	= null;
		
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			
			String url = "jdbc:mysql://localhost:3308/jdbc_test?";
			url += "useSSL=false&"; 			
			url += "serverTimezone=Asia/Seoul&"; 
			url += "useUnicode=true&";			
			url += "characterEncoding=UTF-8"; 
			
			String uid = "root";
			String upw = "1234";
			
			conn = DriverManager.getConnection(url, uid, upw);
			
			
			stmt = conn.createStatement();
			String sql = "select * from data_sample";
			res = stmt.executeQuery(sql);
			
			System.out.println("번호   이름");
			System.out.println("-----------");
			
			while (res.next()) {
				
				int no = res.getInt("no");
				String name = res.getString("name");
				System.out.print(no + "    ");
				System.out.println(name);
			}
			
			res.close();
			stmt.close();
			conn.close();
         	        // 실행한 "역순"으로 닫기
			
		} catch(ClassNotFoundException e){
			System.out.println(e.getMessage());
		} catch(SQLException e) {		
			System.out.println(e.getMessage());
		}
		
	}

}

0개의 댓글