Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Java-MySQL: Insert ข้อมูลเฉพาะคอลัมน์เดียว (Single Column Insert)

ใช้ PreparedStatement ใน Java ร่วมกับคำสั่ง SQL INSERT INTO table (column) VALUES (?) เพื่อเพิ่มข้อมูลเฉพาะคอลัมน์ที่ต้องการ

ตัวอย่างโค้ด Java เต็มรูปแบบ

1. สร้างตารางใน MySQL

mysql> CREATE TABLE DemoTable (
    Name VARCHAR(20)
);
Query OK, 0 rows affected (0.54 sec)

2. Java Code: InsertOneColumnDemo.java

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

public class InsertOneColumnDemo {
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement ps = null;
        try {
            // 1. เชื่อมต่อฐานข้อมูล
            con = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/web?useSSL=false", 
                "root", "123456"
            );
            
            // 2. SQL เฉพาะคอลัมน์ Name
            String query = "INSERT INTO DemoTable(Name) VALUES(?)";
            ps = con.prepareStatement(query);
            
            // 3. กำหนดค่าพารามิเตอร์
            ps.setString(1, "Robert");
            
            // 4. รันคำสั่ง
            ps.executeUpdate();
            System.out.println("Record is inserted successfully......");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 5. ปิดทรัพยากร (Best Practice)
            try { if (ps != null) ps.close(); } catch (Exception e) {}
            try { if (con != null) con.close(); } catch (Exception e) {}
        }
    }
}

3. ผลลัพธ์การรัน

Record is inserted successfully......

4. ตรวจสอบใน MySQL

mysql> SELECT * FROM DemoTable;
+--------+
| Name   |
+--------+
| Robert |
+--------+

จุดสำคัญ (Key Points)

  • ระบุคอลัมน์ชัดเจน: INSERT INTO DemoTable(Name) - คอลัมน์อื่นจะได้ค่า DEFAULT หรือ NULL
  • PreparedStatement: ป้องกัน SQL Injection และจัดการ Data Type อัตโนมัติ
  • setString(int index, String value): Index เริ่มจาก 1 ตามลำดับ ? ใน Query
  • executeUpdate(): ใช้สำหรับ INSERT, UPDATE, DELETE (คืนค่าจำนวนแถวที่เปลี่ยนแปลง)
  • finally block: ปิด Connection และ Statement เสมอ เพื่อป้องกัน Resource Leak

ขยาย: Insert หลายคอลัมน์พร้อมกัน

String query = "INSERT INTO DemoTable(Name, Age, Email) VALUES(?, ?, ?)";
ps = con.prepareStatement(query);
ps.setString(1, "Robert");
ps.setInt(2, 25);
ps.setString(3, "robert@example.com");
ps.executeUpdate();

สรุป

ใช้ INSERT INTO table (col1, col2) VALUES (?, ?) กับ PreparedStatement เพื่อ Insert เฉพาะคอลัมน์ที่ต้องการ อย่าลืมปิด Resource ใน finally block