java:不支持使用executeQuery(字符串)方法错误?

java:不支持使用executeQuery(字符串)方法错误?,java,sql-server,Java,Sql Server,我正在执行一个简单的preparedstatement查询,它会引发以下错误: java.sql.SQLException:net.sourceforge.jtds.jdbc.jtdsprearedstatement.notSupported(jtdsprearedstatement.java:197)中的net.sourceforge.jtds.jdbc.jtdsprearedstatement.executeQuery(jtdsprearedstatement.java:822)中的此类语句

我正在执行一个简单的preparedstatement查询,它会引发以下错误: java.sql.SQLException:net.sourceforge.jtds.jdbc.jtdsprearedstatement.notSupported(jtdsprearedstatement.java:197)中的net.sourceforge.jtds.jdbc.jtdsprearedstatement.executeQuery(jtdsprearedstatement.java:822)中的此类语句不支持使用executeQuery(string)方法,testconn.itemcheck(testconn.java:58)

知道我做错了什么吗?提前谢谢 代码如下:

private static int itemcheck (String itemid ) { 
  String query;
  int count = 0;
  try { 
   Class.forName("net.sourceforge.jtds.jdbc.Driver");
        con = java.sql.DriverManager.getConnection(getConnectionUrl2());
   con.setAutoCommit(false);
   query = "select count(*) as itemcount from timitem where itemid like ?";

   //PreparedStatement pstmt = con.prepareStatement(query); 
   //pstmt.executeUpdate(); 

   PreparedStatement pstmt = con.prepareStatement(query);
   pstmt.setString(1,itemid);
   java.sql.ResultSet rs = pstmt.executeQuery();



   while (rs.next()) {
     count = rs.getInt(1);
    System.out.println(count);
   } //end while 



  }catch(Exception e){ e.printStackTrace(); } 

  return (count);

} //end itemcheck 

有几点值得检查:

  • 使用不同的别名。使用COUNT作为别名会带来麻烦
  • 查询对象不需要传递两次,一次是在语句准备期间,另一次是在执行期间。在
    con.preparest陈述(查询)中使用它即准备报表就足够了
  • 附录

    jTDS是否支持对PreparedStatement使用String arg方法是值得怀疑的。基本原理是PreparedStatement.executeQuery()似乎已实现,而PreparedStatement.executeQuery()中的Statement.executeQuery(字符串)似乎已被重写以引发声明的异常。

    PreparedStatement pstmt = con.prepareStatement(query); 
    pstmt.setString(1,itemid);
    java.sql.ResultSet rs = pstmt.executeQuery(query);
    
    语句
    不同,使用
    PreparedStatement
    可以在创建查询sql时传递查询sql(通过
    连接
    对象)。您正在这样做,但是当您调用
    executeQuery(查询)
    时,您也再次传递了它

    使用为PreparedStatement定义的

    所以


    关于第二点。。。就连我也犯了同样的错误。谢谢你节省了我很多时间
    PreparedStatement pstmt = con.prepareStatement(query); 
    pstmt.setString(1,itemid);
    java.sql.ResultSet rs = pstmt.executeQuery();