학습일기 day27 - 텍스트게시판과 sql 연결 및 add까지 복습

이건구·2023년 9월 26일
0

1. 텍스트게시판하고 sql 연결법.

우선 Maven Repository에서 mysql connector를 검색하여 Gradle코드를 복사하여, intelliJ에 build.gradle에서 dependencies에 붙여넣어준다.

그리고 코끼리마크를 눌러주면된다.

그리고 아래의 JDBC코드를 통해 연결하여 사용할수있다.

// 자동임포트 : alt + enter
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        String url = "jdbc:mysql://localhost:3306/board?serverTimezone=UTC";
        String user = "root";
        String pass = "";

        try {
            // 1. 드라이버 세팅
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2. Connection 획득
            conn = DriverManager.getConnection(url, user, pass);

            // 3. Statement 생성
            stmt = conn.createStatement();

            System.out.println("3번까지 문제 없이 실행");

            4. SQL 처리하고 결과 ResultSet에 받아오기
            String sql = "SELECT * FROM article";
            rs = stmt.executeQuery(sql);
          }
        } catch(Exception e) {
            System.out.println("접속 시도중 문제 발생!!");
        }
    }

주의할점은 String url에서 localhost는 켜놓은 xampp 포트번호이고, 그옆에 / 이후에 board가 적혀있는자리는 sql의 테이블명이다.

위코드를 응용해서 텍스트게시판에서 add를 구현해보겠다.

그전에 sql에서 테이블과 칼럼들은 미리 생성해두어야한다.

import java.util.Scanner;

public class BoardApp {
    Scanner sc = new Scanner(System.in);
    ArticleController articleController = new ArticleController();
    public void start() {
        while (true) {
            System.out.print("명령어 : ");
            String cmd = sc.nextLine();
            if (cmd.equals("exit")) {
                System.out.println("프로그램을 종료합니다.");
                break;
            } else if (cmd.equals("add")) {
                articleController.add();
            }
        }
    }
}

위코드는 BoardApp클래스이고 컨트롤러역할로 만들어두었다. 메인클래스에서는 BoardApp객체를 생성하여 start() 함수를 실행하면 아래 코드가 실행된다.

import util.Util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Scanner;

public class ArticleController {
    Scanner sc = new Scanner(System.in);
    public void add() {
        System.out.print("제목 : ");
        String title = sc.nextLine();
        System.out.print("내용 : ");
        String content = sc.nextLine();

        Connection conn = null;
        Statement stmt = null;
        try {
            conn = getConnection();
            stmt = conn.createStatement();
            String sql = String.format("INSERT INTO textboard SET title = '%s', content = '%s', regDate = '%s'", title, content, Util.getCurrentDate());
            stmt.executeUpdate(sql);
            System.out.println("게시물이 등록되었습니다.");
        } catch (Exception e) {
            System.out.println("접속 시도중 문제 발생!!");
        }
    }

    public Connection getConnection() {
        Connection conn = null;
        String url = "jdbc:mysql://localhost:3306/textboard?serverTimezone=UTC";
        String user = "root";
        String pass = "";
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection(url, user, pass);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }
}

위코드가 실질적인 구현코드이다.

우선 Scanner로 저장할 제목과 내용을 받아 변수에 저장해두고, conn변수에 커넥션을 연결해주고, String sql에 sql문법으로 적어주면서 저장한 제목과 내용, 미리 유틸에 만들어둔 날짜데이터를 넣어주면된다.

잘 저장이 되었는지는 sql에서 확인하면 된다.

0개의 댓글