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

ดึงข้อมูลแถวล่าสุดจาก MySQL ด้วย Java (JDBC)

ใช้คำสั่ง 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;

ขั้นตอนการทำงาน

  1. เชื่อมต่อฐานข้อมูลด้วย DriverManager.getConnection()
  2. สร้าง Statement จาก Connection
  3. รัน Query ด้วย executeQuery() คืนค่า ResultSet
  4. ใช้ rs.next() เลื่อนไปแถวแรก (และเดียว)
  5. ดึงข้อมูลด้วย getString(), getInt() ตามชนิดข้อมูล
  6. ใช้ 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
}