執行 PreparedStatement 插入/更新時拋出 SQLException,提示欄位不能為 null (ORA-01400 / MySQL 1048 / SQL Server 515)。
String aname = request.getParameter("aname"); // 取得 null
pstmt.setString(1, aname); // 設定給 NOT NULL 欄位
pstmt.executeUpdate(); // 資料庫拋錯
request.getParameter("aname") 回傳 null 的情況:
name="anamee")。String aname = request.getParameter("aname");
if (aname == null || aname.trim().isEmpty()) {
// 回傳 400 錯誤或設定預設值
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "缺少必要參數 aname");
return;
}
aname=xxx。ALTER TABLE ... MODIFY aname VARCHAR(100) NULL;否則必須在應用層保證非空。request.getParameter, @RequestParam, JSON 反序列化) **一律視為不可信**,驗證非空、長度、格式後再進入資料層。@NotNull, @Size 等註解聲明式驗證,統一攔截處理。核心口訣:參數為 null 非資料庫錯,乃應用層驗證缺失。