[JAVA] MySQL JDBC 연결 [MAC]

1 minute read


JAVA - MYSQL JDBC 연결 [MAC]


JDBC 다운로드

  • Select Operating System: Platfrom Independent 클릭
  • Platform Independent (Architecture Independent), ZIP Archive 다운로드
  • 🔗 다운로드 링크
# 아래의 경로로 mysql-connector-java-8.0.27.jar 파일 옮기기
# /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/ext

JAVA에 mysql-connector-java-[version].jar 추가

  • 패키지별로 추가해야 함
# 1) 패키지 폴더 우클릭 - Build Path - Configure Build Path 클릭
# 2) Libraries - Add external JARS 클릭 - mysql-connector-java-[version].jar 추가 - Apply and close

JAVA에서 연결 확인

import java.sql.*;                                         
import java.io.*;


public class [CLASS_NAME] { // Class 이름 수정

static String url;

public static void main(String[] args) {

Connection conn = null;
Statement stmt = null;
PreparedStatement pstmt = null;
ResultSet rs = null;

        try{
        Class.forName("com.mysql.cj.jdbc.Driver").newInstance(); 
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/[DB]", 
                                               "[ID]", 
                                               "[PASSWORD]"); //URL,UID,PWD        
            if(conn==null){
                System.out.println("연결실패");
            }else{
                System.out.println("연결성공");
                }
            }catch(ClassNotFoundException ce){
            ce.printStackTrace();            
        }catch(SQLException se){
            se.printStackTrace();    
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{ // 연결 해제
                if(rs!=null){        rs.close();            }
                if(pstmt!=null){    pstmt.close();        }
                if(stmt!=null){    stmt.close();        }
                if(conn!=null){    conn.close();        }
            }catch(SQLException se2){
                se2.printStackTrace();
                }
            }
        }
}

JAVA-MYSQL

  • JDBC 연결을 활용해 MySQL의 empDB 데이터베이스 dept10 테이블의 데이터를 수정
  • 부서위치를 바꿀 부서번호를 입력해, 입력받은 부서번호의 위치(loc)을 바꾸시오
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
import java.sql.PreparedStatement;


public class MyConn03 {

	public static void main(String[] args) {
		Connection conn = null;
		
		String jdbcDriver = "com.mysql.cj.jdbc.Driver";
		String jdbcUrl = "jdbc:mysql://localhost:3306/empDB?serverTimezone=UTC";
		String dbUser = "root";
		String dbPwd = "1234";
		
		String sqlSelect = "SELECT * FROM dept10";
		PreparedStatement pstmt = null; // for dynmaic query
		ResultSet rs = null;
		
		int iDeptno = 0; 
		String sLoc = null;
		
		Scanner sc = new Scanner(System.in);
		System.out.println("부서위치를 바꿀 부서번호를 입력하시오 =>");
		iDeptno = sc.nextInt();
		
		System.out.println(iDeptno + "번 부서번호가 바뀔 위치를 입력하시오 =>");
		sLoc = sc.next();
		
		String sqlUpdate = "UPDATE dept10 \n" + 
							"SET loc = ? \n" + 
							"WHERE (deptno = ?)";
		
		try {
			// 1. JDBC 드라이버 로드
			Class.forName(jdbcDriver); // Library에 있는 "String" 이름의 클래스를 가져와라
			
			// 2. Database Connection 연결
			conn = DriverManager.getConnection(jdbcUrl, dbUser, dbPwd);
			
			System.out.println("Connection 연결");
			
			// 3. Statement 생성
			pstmt = conn.prepareStatement(sqlUpdate);
			
			// 4. SQL 전송 (executeQuery(), exectueUpdate()) 
			pstmt.setString(1, sLoc);
			pstmt.setInt(2, iDeptno);
			
			int resultCount = pstmt.executeUpdate(); // 정상인 경우 보통 숫자 1 반환
			
			// 5. Result set(Sql 결과) 받기
			rs = pstmt.executeQuery(sqlSelect);
				
			if (resultCount > 0) {System.out.println("데이터 정상적으로 추가됨");} 
			else {System.out.println("데이터 정상적으로 입력 안됨");}
			
			while(rs.next()) {System.out.printf("%d | %-10s | %-10s \n", rs.getInt(1), rs.getString(2), rs.getString("loc"));}
			
			// 6. Database Connection 해제
			System.out.println("Connection 해제");
			pstmt.close();
			conn.close();
			} 
			catch (SQLException e) {
				System.out.println("SQL 연결 안됨");
				}
			catch (ClassNotFoundException e) {
				System.out.println("드라이버 로드 실패");
				}
				
	}

}