Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

Java에서 MySQL 테이블 업데이트하기 – PreparedStatement 완벽 가이드

MySQL 테이블을 자바(Java)에서 업데이트하려면 PreparedStatement를 사용하는 것이 가장 안전하고 효율적입니다. 이 글에서는 테이블 생성부터 데이터 수정, 결과 확인까지 전 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable(
    Id int,
    FirstName varchar(40)
);
Query OK, 0 rows affected (0.62 sec)

2. 샘플 데이터 삽입하기

insert 명령어를 사용해 테이블에 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values(100,'Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(111,'Mike');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(121,'Sam');
Query OK, 1 row affected (0.09 sec)

select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable;

실행 결과는 다음과 같습니다.

+------+-----------+
| Id   | FirstName |
+------+-----------+
| 100  | Chris     |
| 111  | Mike      |
| 121  | Sam       |
+------+-----------+
3 rows in set (0.00 sec)

3. 자바 코드로 레코드 업데이트하기

다음은 JDBC의 PreparedStatement를 활용해 특정 레코드를 업데이트하는 자바 코드입니다.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class UpdateFromJava {
   public static void main(String[] args) {
      Connection con = null;
      PreparedStatement ps = null;
      try {
         con = DriverManager.getConnection("jdbc:mysql://localhost:3306/web?" +
         "useSSL=false", "root", "123456");
         String query = "update DemoTable set FirstName=? where Id=? ";
         ps = con.prepareStatement(query);
         ps.setString(1, "Tom");
         ps.setInt(2, 100);
         ps.executeUpdate();
         System.out.println("Record is updated successfully......");
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Record is updated successfully......

4. 핵심 포인트 정리

  • PreparedStatement 사용: SQL 인젝션 공격을 방지하고, 동일한 쿼리를 반복 실행할 때 성능을 크게 향상시킬 수 있습니다.
  • 파라미터 바인딩: setString(), setInt() 등의 메서드로 쿼리 내 ? 플레이스홀더에 값을 안전하게 바인딩합니다.
  • executeUpdate() 호출: UPDATE 문 실행 시 사용되며, 변경된 행의 수를 반환합니다.
  • 예외 처리: try-catch 블록으로 DB 연결 및 쿼리 실행 중 발생할 수 있는 오류를 처리합니다.

5. 업데이트 결과 확인하기

이제 ID가 100인 레코드의 FirstName 값이 'Tom'으로 정상적으로 변경되었는지 확인해 보겠습니다. 다음 쿼리로 레코드를 다시 조회합니다.

mysql> select * from DemoTable;

실행 결과는 다음과 같습니다.

+------+-----------+
| Id   | FirstName |
+------+-----------+
| 100  |       Tom |
| 111  |      Mike |
| 121  |       Sam |
+------+-----------+
3 rows in set (0.00 sec)

출력 결과를 보면 FirstName 컬럼의 값이 Java-MySQL 연동을 통해 성공적으로 'Tom'으로 업데이트된 것을 확인할 수 있습니다. 이처럼 PreparedStatement를 활용하면 안전하고 간결하게 데이터베이스의 데이터를 수정할 수 있습니다.