String sql = "SELECT * FROM users WHERE id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, userId); // userId 為 String 變量
ResultSet rs = ps.executeQuery();
// rs.next() 為 false
表字段 id 為 NUMBER 或 INTEGER 類型,調用 setString 會導致隱式類型轉換,Oracle 可能因格式不匹配(如前導零、科學記數法)導致索引失效或無法匹配。
// id 為 NUMBER
ps.setLong(1, Long.parseLong(userId));
// 或
ps.setInt(1, Integer.parseInt(userId));
ps.setObject(1, Long.valueOf(userId));
ps.toString() 或使用 p6spy/log4jdbc 打印實際執行 SQL 與參數值。