ใช้ LIMIT 1 ในคำสั่ง SQL เพื่อจำกัดผลลัพธ์ให้ได้แค่ 1 แถว แล้วใช้ ResultSet.next() อ่านครั้งเดียวใน Java
ตัวอย่างโค้ด Java เต็มรูปแบบ
1. สร้างตารางและข้อมูลทดสอบใน MySQL
mysql> CREATE TABLE DemoTable (
Id INT,
Name VARCHAR(20)
);
Query OK, 0 rows affected (1.37 sec)
mysql> INSERT INTO DemoTable VALUES(101, 'Chris');
Query OK, 1 row affected (0.54 sec)
mysql> INSERT INTO DemoTable VALUES(102, 'David');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable VALUES(103, 'Mike');
Query OK, 1 row affected (0.12 sec)
2. Java Code: OneResultDemo.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class OneResultDemo {
public static void main(String[] args) {
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
// 1. เชื่อมต่อ
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/web?useSSL=false",
"root", "123456"
);
// 2. SQL ดึง 1 แถวแรก
String query = "SELECT * FROM DemoTable LIMIT 1";
st = con.createStatement();
rs = st.executeQuery(query);
// 3. อ่านผลลัพธ์ (มีได้สูงสุด 1 แถว)
while (rs.next()) {
System.out.println("Id=" + rs.getInt("Id"));
System.out.println("Name=" + rs.getString("Name"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 4. ปิดทรัพยากร
try { if (rs != null) rs.close(); } catch (Exception e) {}
try { if (st != null) st.close(); } catch (Exception e) {}
try { if (con != null) con.close(); } catch (Exception e) {}
}
}
}
3. ผลลัพธ์การรัน
Id=101 Name=Chris
จุดสำคัญ
LIMIT 1: จำกัดผลลัพธ์ 1 แถว (ประหยัด Network/CPU)StatementvsPreparedStatement: Query คงที่ (Static) ใช้ Statement ได้ ไม่มีพารามิเตอร์rs.next(): คืนค่า true ถ้ามีแถวถัดไป ใช้ while หรือ if ก็ได้ (แค่ 1 แถว)rs.getInt("Id"),rs.getString("Name"): ดึงค่าตามชื่อคอลัมน์
ขยาย: ดึงแถวสุดท้าย (Last Row)
String query = "SELECT * FROM DemoTable ORDER BY Id DESC LIMIT 1";
ขยาย: ใช้ PreparedStatement (แนะนำ)
String query = "SELECT * FROM DemoTable WHERE Id = ? LIMIT 1";
PreparedStatement ps = con.prepareStatement(query);
ps.setInt(1, 102);
ResultSet rs = ps.executeQuery();
สรุป
ใช้ LIMIT 1 ใน SQL เพื่อดึง 1 แถว แล้วใน Java ใช้ ResultSet.next() อ่านครั้งเดียว ควรใช้ PreparedStatement หากมีเงื่อนไข WHERE และปิด Resource ใน finally เสมอ