ใช้คำสั่ง SQL ORDER BY id DESC LIMIT 1 ร่วมกับ JDBC executeQuery() เพื่อดึงแถวสุดท้าย
โค้ด Java เต็ม
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class GetLastRecordFromMySQL {
public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/sample?useSSL=false";
String username = "root";
String password = "123456";
try (Connection con = DriverManager.getConnection(jdbcUrl, username, password);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM javaGetDataDemo ORDER BY Id DESC LIMIT 1")) {
System.out.println("Connecting to database: " + jdbcUrl);
if (rs.next()) {
String firstName = rs.getString("FirstName");
String lastName = rs.getString("LastName");
int id = rs.getInt("Id");
System.out.println("Id: " + id);
System.out.println("FirstName: " + firstName);
System.out.println("LastName: " + lastName);
} else {
System.out.println("No data found");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
คำสั่ง SQL สำคัญ
SELECT * FROM javaGetDataDemo ORDER BY Id DESC LIMIT 1;
ขั้นตอนการทำงาน
- เชื่อมต่อฐานข้อมูลด้วย
DriverManager.getConnection() - สร้าง
Statementจาก Connection - รัน Query ด้วย
executeQuery()คืนค่าResultSet - ใช้
rs.next()เลื่อนไปแถวแรก (และเดียว) - ดึงข้อมูลด้วย
getString(),getInt()ตามชนิดข้อมูล - ใช้ try-with-resources ปิดทรัพยากรอัตโนมัติ (Java 7+)
การปรับปรุงประสิทธิภาพ
- ใช้
PreparedStatementแทน Statement เพื่อป้องกัน SQL Injection - เพิ่มดัชนี (Index) บนคอลัมน์ Id
- ระบุคอลัมน์ที่ต้องการแทน
SELECT *
PreparedStatement Version
String sql = "SELECT Id, FirstName, LastName FROM javaGetDataDemo ORDER BY Id DESC LIMIT 1";
try (PreparedStatement pstmt = con.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery()) {
// ... same processing
}