MySQL參數(shù)化查詢是通過使用預處理語句來實現(xiàn)的。預處理語句是一種在服務器上準備和編譯的SQL語句模板,其中的參數(shù)使用占位符代替。在執(zhí)行時,將實際的參數(shù)值綁定到占位符上,然后執(zhí)行預處理語句。
下面是一個使用參數(shù)化查詢的示例:
// 創(chuàng)建預處理語句模板
String query = "SELECT * FROM users WHERE id = ?";
PreparedStatement statement = connection.prepareStatement(query);
// 綁定參數(shù)值
int userId = 1;
statement.setInt(1, userId);
// 執(zhí)行查詢
ResultSet resultSet = statement.executeQuery();
// 處理結(jié)果集
while (resultSet.next()) {
int id = resultSet.getInt("id");
String username = resultSet.getString("username");
System.out.println("ID: " + id + ", Username: " + username);
}
// 關閉連接和語句
resultSet.close();
statement.close();
在上述示例中,首先創(chuàng)建了一個預處理語句模板,其中使用了一個占位符 ?
來表示參數(shù)。然后,使用 setXX()
方法將實際的參數(shù)值綁定到占位符上,其中 XX
表示參數(shù)的類型。最后,執(zhí)行預處理語句并處理結(jié)果集。
通過使用參數(shù)化查詢,可以有效地防止SQL注入攻擊,同時提高查詢的性能,因為預處理語句只需要編譯一次,然后可以多次執(zhí)行。