JDBC 사용하기(MariaDB)

Jan 19, 2024
JDBC 사용하기(MariaDB)
 

MariaDB

MariaDB에 테이블을 생성하고 테이블 구조를 만든다.
notion image
 
 

인텔리제이

 
인텔리제이에서 MariaDB를 사용하기 위해서는 build.gradle파일에 다음을 설정해야 한다.
 
notion image
 
notion image
 
설정을 마친 후 다음과 같이 실행해 보자.
‘main의 java 패키지’와 ‘test의 java 패키지’에 똑같은 구조의 bd패키지를 생성하고 자바파일도 생성한다.
notion image
 
main 패키지
notion image
package db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnection { public static Connection getInstance(){ String username = "root"; String password = "1234"; String url = "jdbc:mariadb://127.0.0.1:3306/cosdb"; // 프로토콜이 적용된 소켓 try { Connection conn = DriverManager.getConnection(url, username, password); System.out.println("db connect success"); return conn; } catch (Exception e) { throw new RuntimeException(e); // 호출하는 놈(JVM)에 예외를 던짐 } } }
 
test 패키지
notion image
package db; import org.junit.jupiter.api.Test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnectionTest { // 테스트코드에서는 main의 본 코드 이름 뒤에 Test // return 타입을 적을 수 없다. // 매개변수를 적을 수 없다. // @Test 붙이면 메서드별로 실행 가능 @Test // main 안 만들어도 됨 /** * testImplementation platform('org.junit:junit-bom:5.9.1') * testImplementation 'org.junit.jupiter:junit-jupiter'얘가 build.gradle에 있어야 하는데 gradle으로 하면 자동으로 된다. * */ public void getInstance_test(){ // _test를 붙인다. String username = "root"; String password = "1234"; String url = "jdbc:mariadb://127.0.0.1:3306/cosdb"; // 프로토콜이 적용된 소켓 try { Connection conn = DriverManager.getConnection(url, username, password); // return conn; // 리턴 못 함 } catch (SQLException e) { throw new RuntimeException(e); // 호출하는 놈(JVM)에 예외를 던짐 } } }
 
 

쿼리 보내기

import db.DBConnection; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class BankApp { public static void main(String[] args) { Connection conn = DBConnection.getInstance(); try { String insert="insert into account_tb(password, balance, created_at) values(?,?,now())"; String delete= "DELETE FROM account_tb WHERE number = ?"; String update= "update account_tb set balance = balance + ? where number = ?"; PreparedStatement pstmt = conn.prepareStatement(insert); // 코드는 다르지만 얘가 버퍼임 // 연결된 선에다가 버퍼를 달고 쿼리를 넣는다. 그런데 그 쿼리가 완성되지 않았어. // insert pstmt.setString(1, "1234"); // 몇 번째 파라미터를 완성할거냐. 1, 2, 3,... 0이 없음 pstmt.setInt(2, 1000); // 몇 번째 파라미터를 완성할거냐. 1, 2, 3,... 0이 없음 // // delete // pstmt.setInt(1, 6); // // update // pstmt.setInt(1, 3000); // pstmt.setInt(2, 2); int num = pstmt.executeUpdate(); // flush(); System.out.println(num); } catch (SQLException e) { throw new RuntimeException(e); } } }
 
insert, delete, update를 테스트한 후 MariaDB로 돌아와 select문을 사용해서 변경된 테이블을 확인한다.
CREATE DATABASE COSdb; INSERT INTO account_tb(NUMBER, PASSWORD, balance, created_at) values USE cosdb; CREATE TABLE account_tb(-- 우리들만의 컨벤션!! 테이블 뒤에 _tb붙이기, 그리고 _쓰기 number int primary KEY AUTO_INCREMENT, password varchar(100) not null, balance int not null, created_at timestamp not null ) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; -- CHARSET=UTF8MB4 안 적어도 디폴트 값 SELECT * FROM account_tb;
 
notion image
 
Share article

hyeonjeong-jang-0302