首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JSP + SQL Server 登錄驗證中 "null 附近語法錯誤" 的根因與修復

     編輯:程式設計綜合問答

錯誤現象

執行登錄查詢拋出 `com.microsoft.sqlserver.jdbc.SQLServerException: “null”附近有語法錯誤。`

代碼缺陷分析

String sql = "select * from hello where IDNum'" + s
+ "' and UserPassword='" + UserPassword
+ "'and UserName='" + a + "'";

關鍵問題:where IDNum' 缺少 比較運算符(`=` 或 `LIKE`),導致 SQL 解析器在單引號後遇到 `null`(參數 `s` 可能為空)時報錯。

修正方案

  1. 補全運算符:`where IDNum = '` + s + `'`
  2. 參數化查詢(必須):防止 SQL 注入,自動處理引號轉義:
    String sql = "SELECT * FROM hello WHERE IDNum = ? AND UserPassword = ? AND UserName = ?";
    PreparedStatement ps = conn.prepareStatement(sql);
    ps.setString(1, s);
    ps.setString(2, UserPassword);
    ps.setString(3, a);
    ResultSet rs = ps.executeQuery();
    
  3. 空值防禦:執行前校驗 `s`、`UserPassword`、`a` 非空。

調試技巧

直接 `System.out.println(sql)` 打印最終 SQL,複製到 SSMS 執行即可快速定位語法錯誤。

JSP SQL Server 登錄驗證,SQL 語法錯誤缺少運算符,參數化查詢防注入,PreparedStatement 正確用法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved