ใช้เมธอด executeQuery() สำหรับคำสั่ง SELECT ด้วย PreparedStatement
ไวยากรณ์
yourPreparedStatementObject = yourConnectionObject.prepareStatement(yourQueryName); yourResultSetObject = yourPreparedStatementObject.executeQuery();
ตัวอย่างโค้ด Java เต็มรูปแบบ
สร้างตารางในฐานข้อมูล 'sample':
mysql> create table JavaPreparedStatement (
-> Id int,
-> Name varchar(10),
-> Age int
-> );
Query OK, 0 rows affected (0.89 sec)
เพิ่มข้อมูลทดสอบ:
mysql> insert into JavaPreparedStatement values(1,'Larry',23); mysql> insert into JavaPreparedStatement values(2,'Sam',25); mysql> insert into JavaPreparedStatement values(3,'Mike',26);
โค้ด Java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class PreparedStatementSelectQueryDemo {
public static void main(String[] args) {
String JdbcURL = "jdbc:mysql://localhost:3306/sample?useSSL=false";
String Username = "root";
String password = "123456";
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rst = null;
String myQuery = "select Id,Name,Age from JavaPreparedStatement";
try {
con = DriverManager.getConnection(JdbcURL, Username, password);
pstmt = con.prepareStatement(myQuery);
rst = pstmt.executeQuery();
System.out.println("Id\t\tName\t\tAge\n");
while(rst.next()) {
System.out.print(rst.getInt(1));
System.out.print("\t\t" + rst.getString(2));
System.out.print("\t\t" + rst.getInt(3));
System.out.println();
}
} catch(Exception exec) {
exec.printStackTrace();
}
}
}
ข้อดีของ PreparedStatement: ป้องกัน SQL Injection, ประสิทธิภาพดีกว่าเมื่อรันคิวรี่ซ้ำ, จัดการชนิดข้อมูลอัตโนมัติ