알버트의 개발하는 블로그

자바 제28강 : 자바 MySQL 연결해서 데이터베이스(DB) 처리하기 (Connection) 본문

프로그래밍 언어/Java

자바 제28강 : 자바 MySQL 연결해서 데이터베이스(DB) 처리하기 (Connection)

알버트 2021. 9. 13. 10:33

 

이번 시간에는 자바 이클립스로 DB와 연동시키는 작업을 해보도록 하겠습니다. 코드는 비교적 아주 간단합니다. 그리고 이 자바로 DB를 연결시키려면 이 코딩이 거의 꼭 들어가게 됩니다. 필수적인 요소라고 보시면 됩니다.

자바에선 DB를 연결하기 위한 클래스로 Connection이란 클래스가 제공이 됩니다. 그럼 바로 간단한 예제를 통해서 Connection 클래스로 DB를 자바로 연결시켜보겠습니다.

 

 

 

 


자바 DB 연결 예제

 

먼저 mysql에 연결하는 메소드 클래스를 보겠습니다. 이 클래스는 SQL과 실질적으로 연결시켜주는 부분입니다.

package kr.koreait.memoProjectWIN;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBUtil {

//	mysql에 연결하는 메소드
	public static Connection getMySQLConnection() {
		Connection conn = null;
		try {
//			물리적인 클래스명, 드라이버를 쓰겠다는 선언
			Class.forName("com.mysql.jdbc.Driver"); 
			
//			DB가 있는 주소
String url = "jdbc:mysql://localhost:3306/javaam?useUnicode=true&characterEncoding=UTF-8";
			
//			Class.forName으로 반환된 클래스로 연결을 맺는 부분
			conn = DriverManager.getConnection(url, "root", "0000");
			
		} catch (ClassNotFoundException e) {	//예외 처리
			System.out.println("드라이버 클래스가 없거나 읽어올 수 없습니다.");
		} catch (SQLException e) {
			System.out.println("데이터베이스 접속 정보가 올바르지 않습니다.");
		}
		return conn;
	}

//	데이터베이스 작업에 사용한 객체를 닫는 메소드
	public static void close(Connection conn) {
	if(conn!= null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace();}}
	}
	public static void close(Statement stmt) {
	if(stmt!= null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace();}}
	}
	public static void close(PreparedStatement pstmt) {
	if(pstmt!= null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace();}}
	}
	public static void close(ResultSet rs) {
	if(rs!= null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } }
	}
	
}

코드는 이와 같습니다. Connection 클래스로 연결을 하기 전에 드라이버를 쓰겠다고 선언해주어야 합니다. 그리고 나서 Connection 클래스로 DB와 연결해주는 코딩을 해주면 되는데요. DB와 연결해주는 코딩에서는 URL, USER ID, PASSWORD가 필요합니다. DriverManager.getConnection( URL, USER ID, PASSWORD)가 들어가게 됩니다. URL은 DB가 있는 주소를 말하고 USER ID는 DB 사용자의 아이디이며 PASSWORD는 사용자의 비밀번호를 의미합니다. DB에서 지정되어 있는대로 똑같이 설정해주셔야 합니다.

 

 

 

 

 

그 다음으로 메인클래스입니다. 연결된 DB에 데이터를 삽입하는 테스트를 진행해보았습니다. 코드는 이와 같습니다.

 

package kr.koreait.dbTest;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class InsertTest {

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.print("이름 : ");
		String name = scanner.nextLine();
		System.out.print("비밀번호 : ");
		String password = scanner.nextLine();
		System.out.print("메모 : ");
		String memo = scanner.nextLine();
		
//		데이터베이스 작업에 사용할 객체를 선언한다.
		Connection conn = null;
		Statement stmt = null;
		PreparedStatement pstmt = null;
		
		try {
//			데이터베이스에 연결한다.
			conn = DBUtil.getMySQLConnection();
			
//			SQL 명령문을 만들어 준다.
			String sql = "INSERT INTO memo(NAME, PASSWORD, memo) VALUES (?, ?, ?)";
			
//			PreparedStatement를 사용해 sql 명령을 임시로 실행한다.
			pstmt = conn.prepareStatement(sql);
//			1번째 '?'를 name으로 설정
			pstmt.setString(1, name);
//			2번째 '?'를 password로 설정
			pstmt.setString(2,  password);
//			3번째 '?'를 memo으로 설정
			pstmt.setString(3, memo);
//			변경된 내용으로 업데이트 진행
			pstmt.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
//			사용되어진 객체를 해제해준다.
			DBUtil.close(stmt);
			DBUtil.close(conn);
		}
		
	}
}

이렇게 코딩해보았습니다. SQL 명령문을 PreparedStatement를 사용해서 임시로 실행하는 작업이 들어갔습니다. 한번 컴파일해보겠습니다.

 

 

 

컴파일해서 이름, 비밀번호, 메모를 넣었더니 위 코딩 내용의 연결 성공이 뜨는데요. DB에 데이터가 잘 들어갔는지만 확인해보겠습니다.

 

 

 

 

SQLyog 프로그램으로 memo란 이름의 테이블을 만들었습니다. 자바에서 입력한 값이 DB에 정상적으로 저장되는 것을 알 수 있습니다. 이렇게 DB를 자바에서 연동시켜주기 위해선 위와 같은 코딩이 필수적이고 아주 기본이 되는 작업입니다. 읽어주셔서 감사합니다.