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를 활용하면 안전하고 간결하게 데이터베이스의 데이터를 수정할 수 있습니다.