반응형

# 자바, MYSQL 연동MySQL, JDBC 연동

1. JDBC 드라이버 다운로드

mysql-connector-java-8.0.20.jar
2.28MB

2. 이클립스에 JDBC 파일 추가하기

  • 진행중인 프로젝트 우 클릭 Build Path > Configure Build Path > Add External JARs > 따로 빼놨던 .jar 파일 찾아서 클릭 >  Apply and Close

3. XAMPP 실행(MySQL)

  • 설치된 MySQL start 후 실행
  • GTANT  ALL PRIVILEGERS ON *.* TO '아이디'@localhost IDENTIFIED BY '비밀번호'
  • GTANT  ALL PRIVILEGERS ON site5.* TO '아이디'@localhost IDENTIFIED BY '비밀번호'
  • GTANT  ALL PRIVILEGERS ON site5.* TO '아이디'@'%' IDENTIFIED BY '비밀번호' 
  • 위 코드 입력하여 권한, 아이디, 비밀번호 등 생성 후 아래 코드 입력 하여 데이터베이스 및 테이블 생성 후 확인
DROP DATABASE IF EXISTS site5;
CREATE DATABASE site5;
USE site5;
CREATE TABLE article (
    id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    regDate DATETIME NOT NULL,
    title CHAR(100) NOT NULL,
    `body` TEXT NOT NULL
);


// 확인 코드 
SHOW DATABASES;
SHOW TABLES;

4. 소스 코드 작성

  • mysql 8.0 이상은 serverTimezone=UTC 설정해줘야 에러가 발생하지 않는다. (서버타임 설정하지 않을 경우 예외처리 발생)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Main {
	public static void main(String[] args) {
		DBConnection dbConn = new DBConnection();

		dbConn.connect();
	}
}

class DBConnection {
	Connection connection;

	public void connect() {
		String url = "jdbc:mysql://localhost:3306/site5?serverTimezone=UTC";
		String user = "sbsst";
		String password = "sbs123414";
		String driverName = "com.mysql.cj.jdbc.Driver";

		try {
			// ① 로드(카카오 택시에 `com.mysql.cj.jdbc.Driver` 라는 실제 택시 드라이버를 등록)
			// 하지만 개발자는 실제로 `com.mysql.cj.jdbc.Driver`를 다룰 일은 없다.
			// 내부적으로 JDBC가 알아서 다 해주기 때문에 우리는 JDBC의 DriverManager 를 통해서 DB와의 연결을 얻으면 된다.
			Class.forName(driverName);

			// ② 연결
			connection = DriverManager.getConnection(url, user, password);
		} catch (ClassNotFoundException e) {
			// `com.mysql.cj.jdbc.Driver` 라는 클래스가 라이브러리로 추가되지 않았다면 오류발생
			System.out.println("[로드 오류]\n" + e.getStackTrace());
		} catch (SQLException e) {
			// DB접속정보가 틀렸다면 오류발생
			System.out.println("[연결 오류]\n" + e.getStackTrace());
		}
	}
}

 

# 활용( 연동, 종료, 게시물 작성 )

  • insert로 게시물 추가 후 MySQL 에서 article 확인 시 새로고침(최신화)는 Alt + F5
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) {
		DBConnection dbConn = new DBConnection();

		dbConn.connect();
		dbConn.insert("INSERT INTO article SET regDate = NOW(), title = '제목', `body` = '내용';");
		dbConn.close();
	}
}

class DBConnection {
	Connection connection;

	public void connect() {
		String url = "jdbc:mysql://localhost:3306/site5?serverTimezone=UTC";
		String user = "sbsst";
		String password = "sbs123414";
		String driverName = "com.mysql.cj.jdbc.Driver";

		try {
			// ① 로드(카카오 택시에 `com.mysql.cj.jdbc.Driver` 라는 실제 택시 드라이버를 등록)
			// 하지만 개발자는 실제로 `com.mysql.cj.jdbc.Driver`를 다룰 일은 없다.
			// 내부적으로 JDBC가 알아서 다 해주기 때문에 우리는 JDBC의 DriverManager 를 통해서 DB와의 연결을 얻으면 된다.
			Class.forName(driverName);

			// ② 연결
			connection = DriverManager.getConnection(url, user, password);
		} catch (ClassNotFoundException e) {
			// `com.mysql.cj.jdbc.Driver` 라는 클래스가 라이브러리로 추가되지 않았다면 오류발생
			System.out.println("[로드 오류]\n" + e.getStackTrace());
		} catch (SQLException e) {
			// DB접속정보가 틀렸다면 오류발생
			System.out.println("[연결 오류]\n" + e.getStackTrace());
		}
	}

	public int insert(String sql) {
		int id = -1;

		// SQL을 적는 문서파일
		Statement statement = null;
		// SQL의 실행결과 보고서
		ResultSet rs = null;

		try {
			statement = connection.createStatement();
			statement.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
			rs = statement.getGeneratedKeys();
			if (rs.next()) {
				id = rs.getInt(1);
			}
		} catch (SQLException e) {
			System.out.println("[INSERT 쿼리 오류]\n" + e.getStackTrace());
		}

		try {
			if (statement != null) {
				statement.close();
			}

			if (rs != null) {
				rs.close();
			}
		} catch (SQLException e) {
			System.out.println("[INSERT 종료 오류]\n" + e.getStackTrace());
		}

		return id;
	}

	public void close() {
		try {
			if (connection != null) {
				connection.close();
			}
		} catch (SQLException e) {
			System.out.println("[닫기 오류]\n" + e.getStackTrace());
		}
	}
}
반응형

'프로그래밍 > 자바, JDBC' 카테고리의 다른 글

MySQL 데이터 갯수 가져오기  (0) 2020.06.18
SQL 명령어  (0) 2020.06.16
스레드 (Thread)  (0) 2020.06.15
뉴렉처 학습(JDBC) 1강~2강  (0) 2020.06.15
JDBC, MySQL Driver  (0) 2020.06.15

+ Recent posts