使用 Prepared Statement 的好處是可以避免常見的 SQL 注入攻擊 (SQL Injection)
我們先在先在資料庫中建立一個表格:
CREATE TABLE users (name TEXT, mail TEXT);
然後 Java 語法如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class NewClass {
public static void main (String[] args) throws SQLException {
// 使用 try {} 可以讓 Connection 結束後自動執行 close() 以關閉資料庫。
try (Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/db_name", "user_name", "password");) {
// 插入
PreparedStatement ps = conn.prepareStatement("INSERT INTO users (name, mail) VALUES(?, ?);");
ps.setString(1, "Loli");
ps.setString(2, "my@lolilab.com");
ps.execute();
ps = conn.prepareStatement("SELECT * FROM users;");
// 查詢
ResultSet rs = ps.executeQuery();
while (rs.next()) {
System.out.println("Query : " + rs.getString("name") + " , " + rs.getString("mail"));
}
}
}
}
其他說明:上面的問號(?)正規名稱叫做 "佔位符"
留言列表