MariaDB
MariaDB에 테이블을 생성하고 테이블 구조를 만든다.
인텔리제이
인텔리제이에서 MariaDB를 사용하기 위해서는 build.gradle파일에 다음을 설정해야 한다.
설정을 마친 후 다음과 같이 실행해 보자.
‘main의 java 패키지’와 ‘test의 java 패키지’에 똑같은 구조의 bd패키지를 생성하고 자바파일도 생성한다.
main 패키지
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 패키지
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;
Share article