ใช้ 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