반응형
# 자바, MYSQL 연동MySQL, JDBC 연동
1. JDBC 드라이버 다운로드
- https://mvnrepository.com/artifact/mysql/mysql-connector-java
- 최신 버전 다운로드.
- 다운로드 한 파일에서 .jar 파일만 따로 압출풀어서 갖고있기
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 |