JAVA에서 JDBC를 이용해 MariaDB 사용해 보기

JAVA프로그램에서 JDBC를 이용해 MariaDB 사용해 보기

안녕하세요.

이번에 소개할 내용은 JAVA에서 JDBC를 이용해 MariaDB 사용해 보기 입니다.

JDBC란 JAVA와 디비를 연결해 사용해줄수 있게 해주는 다리 역할로

Oracle, MySql, PostgreSql, MS-SQL, MariaDB….등등 수많은 DB가 있습니다.

이런 수많은 디비들을 다 개발자가 관리하며 접속하는것이 힘들기 때문에

JDBC가 중간 역할로 하나의 공통 메소드를 사용하여 어떤 DB를 사용해도

똑같은 메소드로 공통 처리가 가능하게 해주는 역할을 합니다.

그러면 이제 MariaDB를 어떻게하면 JAVA에서 사용가능한지 해보도록 하겠습니다.

우선 MariaDB를 사용하기 위해선 드라이버를 다운로드 받으셔야만 합니다.

아래의 링크에서 드라이버를 다운받아 주세요.

https://downloads.mariadb.org/connector-java/

다운로드 방법은 아래의 캡쳐를 보고 따라하시면 됩니다.

다운로드 버튼을 누르시면 아래의 페이지로 이동을 하게 되며

jar 파일을 두종류로 나눠져서 다운로드가 가능 합니다.

소스를 포함한 jar을 다운로드 할것인지 이경우는 소스를 전부 포함하고 있기에 용량이 큽니다.

다음은 소스를 포함하지 않은 DB를 사용하기 위한 jar파일 입니다.

어느것을 다운로드 받아도 사용하는데는 지장은 없기때문에 저는 소스가 포함되지 않은 jar을 다운받겠습니다.

파일명을 클릭하시기 바랍니다.

아래의 페이지로 이동을 하시면 mariadb-java-client-2.6.0.jar 을 클릭하시어 다운로드 받습니다.

다운로드가 되셨으면 이클립스를 실행하시기 바랍니다.

이클립스를 실행하시고 기존에 만들어둔 프로젝트에서 jar 파일을 넣어둘 폴더를 추가하도록 하겠습니다.

폴더명은 lib로 입력후 finish버튼을 눌러주세요.

lib폴더가 추가 된것을 확인할수 있습니다.

다운로드 받으신 mariadb-java-client-2.6.0.jar 파일을 Ctrl + X키로 잘라내신후

이클립스의 lib폴더에 붙여넣어주시기 바랍니다.

lib폴더에 mariadb-java-client-2.6.0.jar 파일이 추가된것을 확인할수 있습니다.

이젠 추가한 jar파일을 빌드패스에 등록해 줍니다.

mariadb-java-client-2.6.0.jar를 빌드패스로 추가했습니다.

이렇게해서 JAVA에서 MariaDB를 사용할수 있게 되었습니다.

그러면 JDBC를 이용해서 MariaDB에 접속후 Select, Insert, Update, Delete를 해보도록 하겠습니다만

우선 MariaDB에 테이블을 생성을 하도록 하겠습니다.

아직 환경이나 DB가 설치가 안되어 있으신 분은 라즈베리파이 또는 리눅스에서 NPM (Nginx + PHP + MariaDB) 설치하기를 참고해주시기 바랍니다.

우선 DB에 간단한 테이블을 만들어 보도록 하겠습니다.

phpMyAdmin에 로그인을 해주시기 바랍니다.

로그인을 하셨으면 New링크를 누르시고 데이터베이스를 추가를 하도록 하겠습니다.

데이터베이스명과 utf8mb4_unicode_ci를 선택하시고 만들기 버튼을 눌러주세요.

데이터베이스가 추가된것을 보실수 있습니다.

이젠 간단한 테이블을 만들어 보도록 하겠습니다.

테이블명은 test, 컬럼은 이름,나이,생년월일을 만들것이기에 3개로 지정후 실행을 눌러주세요.

컬럼을 위와같이 설정후 저장을 눌러주세요.

테이블이 추가가 되었습니다.

그럼 다시 이클립스로 돌아오셔서 본격적으로 코딩을 시작하도록 하겠습니다.

아래와같이 5개의 클래스파일을 만들도록 하겠습니다.

TestConnection.java
TestInsert.java
TestSelect.java
TestUpdate.java
TestDelete.java

5개의 클래스파일 전부 위와같이 세팅후 추가를 해주시기 바랍니다.

클래스파일을 전부 추가한 상태 입니다.

이제 TestConnection.java부터 코딩을 하며 추가한 데이터베이스에 연결이 되는지 확인하도록 하겠습니다.

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

public class TestConnection {

	public static void main(String[] args) {
		Connection conn = null;

		try {
			// mariaDB 드라이버 설정
			Class.forName("org.mariadb.jdbc.Driver");

			// 접속할 DB주소 설정
			String url = "jdbc:mysql://10.0.1.30/akibatv";

			// 접속할 아이디, 비밀번호 설정
			conn = DriverManager.getConnection(url, "akibatv", "akibatv");
      System.out.println("DB 연결 성공");
		} catch (ClassNotFoundException e){
      System.out.println("mariaDB Driver를 찾을수 없습니다.");
    } catch (SQLException e) {
      System.out.println("Database 연결중 에러가 발생 했습니다.");
    } finally {
	    try {
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

코딩을 하셨으면 DB에 연결이 되는지 확인을 해보도록 하겠습니다. 상단의 ▶를 눌러주셔서 실행을 합니다.

실행을 하시면 위와같이 DB 연결 성공이라고 나오게 됩니다.

그럼 테이블에 간단한 데이터를 Insert 해보도록 하겠습니다.

TestInsert.java를 열어주시기 바랍니다.

그리고 아래와 같이 코딩을 하시고 상단의 ▶를 눌러주셔서 실행을 합니다.

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

public class TestInsert {

	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement pstmt = null;

		try {
			// mariaDB 드라이버 설정
			Class.forName("org.mariadb.jdbc.Driver");

			// 접속할 DB주소 설정
			String url = "jdbc:mysql://10.0.1.30/akibatv";

			// 접속할 아이디, 비밀번호 설정
			conn = DriverManager.getConnection(url, "akibatv", "akibatv");
			System.out.println("DB 연결 성공");

			// Insert문 ?부분은 아래의 입력값이 자동으로 변환이 됩니다.
			String sql = " INSERT INTO test VALUES (?,?,?) ";
			pstmt = conn.prepareStatement(sql);

			int index = 1;
			// Insert 데이터값
			// 이름은 String형태 TEST
			pstmt.setString(index++, "TEST");
			// 나이는 Int형태 99살
			pstmt.setInt(index++, 99);
			// 나이는 String형태 20200607
			pstmt.setString(index++, "20200607");

			// SQL실행
			int count = pstmt.executeUpdate();

			if (count == 0) {
				System.out.println("데이터값에 이상이 있습니다.");
			} else {
				System.out.println("데이터 Insert 성공!");
			}
		} catch (ClassNotFoundException e){
			System.out.println("mariaDB Driver를 찾을수 없습니다.");
		} catch (SQLException e) {
			System.out.println("Database 연결중 에러가 발생 했습니다.");
		} finally {
			try {
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

DB연결과 데이터 Insert가 성공했다고 출력 됩니다.

그럼 정상적으로 데이터가 들어갔는지 phpMyAdmin에서 확인해 보도록 하겠습니다.

phpMyAdmin에서도 데이터가 정상적으로 등록된것을 확인할수가 있습니다.

그럼 이번에는 등록한 데이터를 출력하는 Select를 해보도록 하겠습니다.

TestSelect.java를 열어주시기 바랍니다.

그리고 아래와 같이 코딩을 하시고 상단의 ▶를 눌러주셔서 실행을 합니다.

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

public class TestSelect {

	public static void main(String[] args) {
		Connection conn = null;
		Statement stmt = null;
    ResultSet rs = null;

		try {
			// mariaDB 드라이버 설정
			Class.forName("org.mariadb.jdbc.Driver");

			// 접속할 DB주소 설정
			String url = "jdbc:mysql://10.0.1.30/akibatv";

			// 접속할 아이디, 비밀번호 설정
			conn = DriverManager.getConnection(url, "akibatv", "akibatv");
			System.out.println("DB 연결 성공");

			// Select 쿼리문
			String sql = " SELECT name, age, birthday FROM test ";
			// 객체 생성
			stmt = conn.createStatement();
			// SQL실행
			rs = stmt.executeQuery(sql);

			// 결과값 출력
			while (rs.next()) {
				String name = rs.getString(1);
				String age = rs.getString(2);
				String birthday = rs.getString(3);

				System.out.println("이름 : " + name);
				System.out.println("나이 : " + age);
				System.out.println("생년월일 : " + birthday);
			}
		} catch (ClassNotFoundException e){
			System.out.println("mariaDB Driver를 찾을수 없습니다.");
		} catch (SQLException e) {
			System.out.println("Database 연결중 에러가 발생 했습니다.");
		} finally {
			try {
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

DB연결과 Select가 성공후 콘솔창에 내용이 출력된것을 확인할수 있습니다.

그럼 이번에는 등록한 데이터를 출력하는 Update를 해보도록 하겠습니다.

TestUpdate.java를 열어주시기 바랍니다.

그리고 아래와 같이 코딩을 하시고 상단의 ▶를 눌러주셔서 실행을 합니다.

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

public class TestUpdate {

	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement pstmt = null;

		try {
			// mariaDB 드라이버 설정
			Class.forName("org.mariadb.jdbc.Driver");

			// 접속할 DB주소 설정
			String url = "jdbc:mysql://10.0.1.30/akibatv";

			// 접속할 아이디, 비밀번호 설정
			conn = DriverManager.getConnection(url, "akibatv", "akibatv");
			System.out.println("DB 연결 성공");

			// Update 쿼리문
			String sql = " UPDATE test SET name = ?, age = ?, birthday = ? ";
			// 객체 생성과 쿼리문을 넘겨줍니다.
			pstmt = conn.prepareStatement(sql);

			int index = 1;
			// Update 데이터값
			// 이름은 String형태 AkibaTV
			pstmt.setString(index++, "AkibaTV");
			// 나이는 Int형태 15살
			pstmt.setInt(index++, 15);
			// 나이는 String형태 19990101
			pstmt.setString(index++, "19990101");

			// SQL실행
			int count = pstmt.executeUpdate();

			if (count == 0) {
				System.out.println("데이터값에 이상이 있습니다.");
			} else {
				System.out.println("데이터 Update 성공!");
			}
		} catch (ClassNotFoundException e){
			System.out.println("mariaDB Driver를 찾을수 없습니다.");
		} catch (SQLException e) {
			System.out.println("Database 연결중 에러가 발생 했습니다.");
		} finally {
			try {
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

DB연결과 데이터 Update가 성공했다고 출력 됩니다.

그럼 정상적으로 데이터가 갱신이 되었는지 phpMyAdmin에서 확인해 보도록 하겠습니다.

phpMyAdmin에서도 정상적으로 데이터가 갱신된것을 확인하실수 있습니다.

그럼 이번에는 마지막으로 데이터를 삭제하는 Delete를 해보도록 하겠습니다.

TestDelete.java를 열어주시기 바랍니다.

그리고 아래와 같이 코딩을 하시고 상단의 ▶를 눌러주셔서 실행을 합니다.

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

public class TestDelete {

	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement pstmt = null;

		try {
			// mariaDB 드라이버 설정
			Class.forName("org.mariadb.jdbc.Driver");

			// 접속할 DB주소 설정
			String url = "jdbc:mysql://10.0.1.30/akibatv";

			// 접속할 아이디, 비밀번호 설정
			conn = DriverManager.getConnection(url, "akibatv", "akibatv");
			System.out.println("DB 연결 성공");

			// Update 쿼리문
			String sql = " DELETE FROM test WHERE name = ? ";
			// 객체 생성과 쿼리문을 넘겨줍니다.
			pstmt = conn.prepareStatement(sql);

			int index = 1;
			// Delete 데이터값
			pstmt.setString(index++, "AkibaTV");

			// SQL실행
			int count = pstmt.executeUpdate();

			if (count == 0) {
				System.out.println("데이터값에 이상이 있습니다.");
			} else {
				System.out.println("데이터 Delete 성공!");
			}
		} catch (ClassNotFoundException e){
			System.out.println("mariaDB Driver를 찾을수 없습니다.");
		} catch (SQLException e) {
			System.out.println("Database 연결중 에러가 발생 했습니다.");
		} finally {
			try {
				if (conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

DB연결과 데이터 Delete가 성공했다고 출력 됩니다.

그럼 정상적으로 데이터가 삭제가 되었는지 phpMyAdmin에서 확인해 보도록 하겠습니다.

phpMyAdmin에서도 정상적으로 데이터가 삭제된것을 확인하실수 있습니다.