2017-11-11 112 views
0

我嘗試使用JAVA 8 Java的PreparedStatement和代碼的打擊的Java的PreparedStatement:com.microsoft.sqlserver.jdbc.SQLServerException:參數指標超出範圍

 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     con = DriverManager.getConnection(URl,user,""); 
     String sql = "Select Grade from XS_KC where Snum=? and Cnum=?"; 
     PreparedStatement pst = con.prepareStatement(sql); 
     pst.setString(1, "020101"); 
     pst.setString(2, "102"); 
     rs = pst.executeQuery(); 
     while(rs.next()) 
     { 
      System.out.print(rs.getString(1)); 
     } 

我得到的fllowing執行SQL查詢錯誤:com.microsoft.sqlserver.jdbc.SQLServerException:parameter index out of range 但是,如果使用

stat = con.createStatement(); 
rs = stat.executeQuery("Select Grade from XS_KC where Snum='020101' and Cnum='101'"); 

我能得到的結果 有什麼不對?

+0

你有不同的列名,不同的值(101 VS 102)......讓我不知道實際的代碼和SQL語句 –

+0

我很抱歉。我忘記更改列名稱。但這不是關鍵。因爲我只是把它翻譯成英文 –

回答

1

查詢中的第一個是Unicode 0x1FFF而不是0x3F00(問號)。嘗試:

String sql = "Select Grade from XS_KC where Snum=? and Cnum=?"; 
+0

謝謝先生。也許這是那些母語不是英語的人的悲傷 –