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

Java 查詢 SQL Server nvarchar 字段無結果:參數設置與編碼排查

     編輯:程式設計疑難解答

現象

使用 PreparedStatement.setString(1, bookName) 查詢 nvarchar(20) 字段 bookName,數據庫中有數據但 ResultSet 為空。

排查清單

  1. 參數索引:確認 SQL 中 ? 位置與 setString(1, ...) 一致。
  2. 字符編碼:JDBC URL 添加 sendStringParametersAsUnicode=true(默認 true),確保 Unicode 傳輸。
  3. 數據庫排序規則:列的 Collation 是否區分大小寫/重音,導致匹配失敗。
  4. 驅動版本:升級 mssql-jdbc 至最新版。
  5. 隱式轉換:嘗試在 SQL 中強制轉換 WHERE bookName = CAST(? AS NVARCHAR(20))。

調試技巧

// 打印生成的 SQL(需用 P6Spy 或 log4jdbc)
// 或手動拼裝測試
String testSql = "SELECT * FROM bookInList WHERE bookName = N'C++'";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(testSql); // 若此查有結果,說明參數綁定有問題
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved