[Java 풀스택 과정 강의] 2월 13일

부트캠프 일지/Java 풀스택 과정 강의
2026.02.21
※ TIL와는 별개로 적는 개인 개발 일지라서 말은 좀 편하게하는 페이지입니다.
일지이기 때문에 일기의 성격이 더 강합니다.

 

 

JAVA에서 DB 연결

JAVA에서 DB를 연결을 한다. oracle 기반일 경우 라이브러리 ojdbc가 필요하다.

 

이후 DriverManager 및 Connection을 import한다.

import java.sql.Connection;
import java.sql.DriverManager;

 

DriverManager.getConnection();을 사용해서 연결하면 된다. 아래와 같이 사용한다.

Connection con = DriverManager.getConnection(url, user, pwd);

 

순서대로 연결할 DB, 계정명, 해당 계정의 패스워드를 입력한다.

 

url의 경우는 아래와 같다.

//jdbc:jdbc종류:@ip주소:포트:sid
jdbc:oracle:thin:@localhost:29889:xe

 

con이 존재하거나 하면 바로 연결이 된다.

DB 연결은 연결이 안 될 수도 있으므로 try-catch 사용을 권장한다. 이 경우 catch라면 보편적인 e.printStackTrace();문을 출력하는 걸 추천한다.

 

레코드 값 받기

Statement 사용 및 ResultSet 사용

Statement는 Connection으로 연결한 객체에 쿼리 작업을 실행하기 위한 객체이다. 뒤에 다음과 같은 메서드들을 붙일 수 있다.

 

executeQuery()

안에 String Query문이 들어간다. select 및 show문을 위해서 사용한다. 이 결과값은 ResultSet에서 받을 수 있다.

 

executeUpdate()

안에 String Query문이 들어간다. SQL DML(Create·Update·Delete)에 사용하기 위해 사용한다.

 

ResultSet

excuteQuery()에서 나타난 것을 받아 저장할 수 있다.

 

import java.sql.Statement;
import java.sql.ResultSet;

public class DBConnect {
    public static void main(String[] args) {
       // 여기에 DB 커넥트 과정을 거침, dbCon을 반환받는다.
       Statement stmt = null;
       ResultSet rs = null;
       
       con = dbCon.getConnection();
       stmt = con.createStatement();
       String sql = "SELECT * FROM table ORDER BY columnNo";
       
       rs = stmt.executeQuery(sql);
       
    }
}

 

 

ResultSet.next()의 경우 참조 레코드가 있으면 true, 없으면 false를 반환한다.

ResultSet와 while문을 사용하여 레코드값을 출력할 수 있다.

 

ResultSet.getString(columnIndex) / ResultSet.getInt(columnIndex)

컬럼의 indx인 columnIndex를 입력하여 내용을 받아 필드에 저장할 수 있다. 다음과 같은 느낌이 된다.

            while(rs.next()) {
                String columnNo = rs.getString(1);
                String columnName = rs.getString(2);
                System.out.format("%-10s\t %-20s\n",
                                  columnNo, columnName);
            }

 

마무리로 모든 과정을 거치면 close()를 해줘야 한다. 이 경우 생성의 역순이 된다.

 

import java.sql.Statement;
import java.sql.ResultSet;

public class DBConnect {
    public static void main(String[] args) {
       // 여기에 DB 커넥트 과정을 거침, dbCon을 반환받는다.
       Statement stmt = null;
       ResultSet rs = null;
       
       con = dbCon.getConnection();
       stmt = con.createStatement();
       String sql = "SELECT * FROM table ORDER BY columnNo";
       
       rs = stmt.executeQuery(sql);

            while(rs.next()) {
                String columnNo = rs.getString(1);
                String columnName = rs.getString(2);
                System.out.format("%-10s\t %-20s\n",
                                  columnNo, columnName);
            }

        rs.close();
        stmt.close();
        con.close();
    }
}

 

총집약하여 간단히 말하면 이런 느낌이다.

 

 

DB CRUD

prepareStatement

위를 응용하여 CRUD를 진행하면 되지만, 문제는 Statement의 특징이다. Statement는 처리를 할 때 이미 SQL 문 전체를 미리 적은 후에 처리를 해야하는, 전처리가 필요한 객체이다. 이 경우 입력문(Scanner Input) 등을 사용하기가 어려워진다.

이를 위해 있는 것이 prepareStatement이다. 사용법은 Statement와 비슷하다.

 

prepareStatement를 사용하면 변수를 ?으로 바인딩한 뒤, setString 등의 메서드로 후 입력이 가능하다. 다음처럼 사용할 수 있다.

 

String sql = "INSERT INTO table VALUES(?,?,?,?,?,?,?)";
pstmt = con.prepareStatement(sql);

String columnNo = "1";
String columnName = "컬럼명";

pstmt.setString(1, columnNo);
pstmt.setString(2, columnName);

 

이를 사용하여 입력문 등으로 쉬이 CRUD가 가능해진다.