Java

[Java] 자바에서 JDBC를 통해 MySQL를 데이터 조작해보기

joheamin 2025. 4. 1. 23:22

오늘은 JDBC를 통해 데이터베이스에 Student 테이블을 조작해보겠다.

 

1️⃣ Connection을 통해 MySQL와 Java 연결

Connection을 꺼내 반환 받을 메서드 생성
public class DBConnection {

//getConnection 커넥트 반환 메서드
public static Connection getConnection(){}
}

드라이버 로딩

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


👉 이때 checkException에 의해 반드시 예외 처리를 해준다.

try {
	Class.forName("com.mysql.cj.jdbc.Driver");
	String url = "";
	}catch (Exception e) {}

Connection에 필요한 정보 전달 및 생성

try {
	
    Class.forName("com.mysql.cj.jdbc.Driver");
	//나의 mysql의 포트번호
	String url = "jdbc:mysql://@127.0.0.1:3306/mydb?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true";
			
	//커넥트에 필요한 정보 저장 (url,유저아이디,비밀번호)
	Connection conn = DriverManager.getConnection(url,"root","8086");			
			
	System.out.println("커넥션 성공");
            
	//커넥트 반환
	return conn;
}catch (Exception e) {
	System.out.println("커넥션 실패");
	return null;
}

 

 

2️⃣ Connection 가져오기 테스트

테스트할 클래스 생성
public class StudentTest {
	
    //getConnection 메서드를 통해 커넥션 가져오기
	private static Connection cn = DBConnection.getConnection();
    
	public static void main(String[] args) {
		System.out.println(cn);
	}
}

👉 실패

 

 이유는

자바가 실행되기 위해서 필요한 라이브러리가 없기 때문이다.

 

 

라이브러리 추가

프로젝트 우클릭 → Build Path → Configure Build Path

 

Libraries → Classpath → Add External JARs

 

파일에 저장된 JAR 파일 가져오기

 


 

🔷 Connection을 통해 데이터출력

◾ 출력 메서드 생성
	public static void selectList() {
		
	}​


sql 구문 실행할 라이브러리 가져오기

import java.sql.ResultSet;
import java.sql.Statement;
	//또는
	import java.sql.*;

👉 전부 인터페이스이며 인터페이스를 구현하는 것은 각 DBMS회사 이다.

(드라이버


◾ DB 에 접근하기 위한 클래스 변수들

	private static Connection cn = DBConnection.getConnection();
	private static Statement st;
	private static ResultSet rs;
	private static String sql;

Student 조회를 위한 sql 구문 짜기
Connection 인스턴스에서 Statement 생성해서 반환

	public static void selectList() {

		try {
			sql = "select * from student";
			st = cn.createStatement();     // 반드시 예외처리(checkedEx)

		} catch (Exception e) {
		}
	}

쿼리문의 결과 반환 받기

rs = st.executeQuery(sql);

리스트 출력

if(rs.next()) {  
	//결과가 존재하고 1건을 읽어놓은 상태
	System.out.println(rs.get);
}

 


어떤 반복문?

next를 통해 먼저 담겨있는 데이터 먼저 출력한 뒤 다음 데이터를 가져오기위해

do-while문 사용

if(rs.next()) {
	do {
		System.out.printf("아이디: %d , 이름: %s \n",rs.getInt(1),rs.getString(2));
	}while(rs.next());
	}else {
		System.out.println("출력할 데이터가 없음");
	}

👉 getInt와 getString의 인자는 컬럼 순서로 0부터가 아닌 1부터 시작

      다음 데이터가 있을 시 계속 반복하고 do에서 출력