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

Java로 MySQL 데이터베이스 데이터 업데이트하는 방법 완벽 가이드

MySQL 테이블의 데이터를 Java로 업데이트하는 방법

MySQL 데이터베이스 테이블의 기존 데이터를 수정하려면 UPDATE 명령어를 사용합니다. 기본 문법은 다음과 같습니다.

update yourTableName set yourColumnName1 = value1,....N where condition;

UPDATE 문은 WHERE 조건절과 함께 사용해야 원하는 레코드만 정확하게 수정할 수 있습니다. WHERE 절을 생략하면 테이블의 모든 행이 변경되므로 각별히 주의해야 합니다.

1단계: 테이블 생성하기

먼저 실습에 사용할 테이블을 생성합니다. 다음 쿼리를 실행하세요.

mysql> create table UpdateDemo
   -> (
   -> id int,
   -> Name varchar(200)
   -> );
Query OK, 0 rows affected (0.67 sec)

2단계: 샘플 데이터 삽입하기

테이블에 테스트용 레코드를 삽입합니다. 아래는 해당 쿼리입니다.

mysql> insert into UpdateDemo values(101,'John');
Query OK, 1 row affected (0.19 sec)
mysql> truncate table UpdateDemo;
Query OK, 0 rows affected (0.86 sec)
mysql> insert into UpdateDemo values(1,'John');
Query OK, 1 row affected (0.13 sec)
mysql> insert into UpdateDemo values(2,'Carol');
Query OK, 1 row affected (0.13 sec)
mysql> insert into UpdateDemo values(3,'Smith');
Query OK, 1 row affected (0.18 sec)
mysql> insert into UpdateDemo values(4,'David');
Query OK, 1 row affected (0.15 sec)

3단계: 현재 데이터 확인하기

SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> select *from UpdateDemo;

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

+------+-------+
| id   | Name  |
+------+-------+
|    1 | John  |
|    2 | Carol |
|    3 | Smith |
|    4 | David |
+------+-------+
4 rows in set (0.00 sec)

Java 코드로 MySQL 데이터 업데이트하기

이제 JDBC(Java Database Connectivity)를 활용하여 MySQL 데이터베이스에 연결하고 레코드를 업데이트하는 Java 코드를 살펴보겠습니다. 이 예제에서는 id가 1과 4인 레코드의 Name 컬럼 값을 'Johnson'으로 변경합니다.

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.Statement;
public class JavaUpdateDemo {
   public static void main(String[] args) {
      Connection conn = null;
      Statement stmt = null;
      try {
         try {
            Class.forName("com.mysql.jdbc.Driver");
         } catch (Exception e) {
            System.out.println(e);
         }
         conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/business", "Manish", "123456");
         System.out.println("Connection is created successfully:");
         stmt = (Statement) conn.createStatement();
         String query1 = "update UpdateDemo set Name='Johnson' " + "where id in(1,4)";
         stmt.executeUpdate(query1);
         System.out.println("Record has been updated in the table successfully..................");
      } catch (SQLException excep) {
         excep.printStackTrace();
      } catch (Exception excep) {
         excep.printStackTrace();
      } finally {
         try {
            if (stmt != null)
            conn.close();
         } catch (SQLException se) {}
         try {
            if (conn != null)
            conn.close();
         } catch (SQLException se) {
            se.printStackTrace();
         }
      }
      System.out.println("Please check it in the MySQL Table. Record is now updated.......");
   }
}

코드 핵심 흐름 설명

위 코드의 동작 과정을 단계별로 정리하면 다음과 같습니다.

1. 드라이버 로딩: Class.forName() 메서드로 MySQL JDBC 드라이버를 메모리에 로드합니다.
2. 데이터베이스 연결: DriverManager.getConnection() 메서드를 통해 JDBC URL, 사용자명, 비밀번호를 지정하여 연결 객체를 생성합니다.
3. Statement 생성: createStatement() 메서드로 SQL 문을 실행할 수 있는 Statement 객체를 만듭니다.
4. UPDATE 쿼리 실행: executeUpdate() 메서드로 UPDATE 문을 실행하여 id가 1 또는 4인 레코드의 이름을 'Johnson'으로 변경합니다.
5. 자원 해제: finally 블록에서 Statement와 Connection 객체를 닫아 리소스 누수를 방지합니다.

업데이트 결과 확인하기

Java 프로그램 실행 후, SELECT 문으로 테이블 데이터가 실제로 변경되었는지 확인할 수 있습니다.

mysql> select *from UpdateDemo;

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

+------+---------+
| id   | Name    |
+------+---------+
| 1    | Johnson |
| 2    | Carol   |
| 3    | Smith   |
| 4    | Johnson |
+------+---------+
4 rows in set (0.00 sec)

출력 결과를 보면 id가 1인 'John'과 id가 4인 'David'가 모두 'Johnson'으로 성공적으로 업데이트된 것을 확인할 수 있습니다. 나머지 레코드(id 2, 3)는 WHERE 조건에 해당하지 않으므로 그대로 유지되었습니다.

마무리 및 추가 팁

이처럼 Java와 JDBC를 활용하면 MySQL 데이터베이스의 데이터를 손쉽게 업데이트할 수 있습니다. 실무 환경에서는 다음 사항도 함께 고려하는 것이 좋습니다.

- PreparedStatement 사용: SQL 인젝션 공격을 방지하고 성능을 개선하려면 Statement 대신 PreparedStatement와 파라미터 바인딩을 사용하는 것이 권장됩니다.
- try-with-resources 활용: Java 7 이상에서는 try-with-resources 구문을 사용하면 자원 해제 코드를 더욱 간결하게 작성할 수 있습니다.
- WHERE 절 필수 확인: UPDATE 문 실행 시 반드시 WHERE 조건을 검토하여 의도하지 않은 전체 데이터 변경을 방지하세요.