2017-11-11 113 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

谢谢先生。也许这是那些母语不是英语的人的悲伤 –