当前位置: 首页 > 面试题库 >

java:使用executeQuery(string)方法不受支持的错误?

景鹏飞
2023-03-14
问题内容

我正在执行一个简单的preparestatement查询执行,并抛出此错误:java.sql.SQLException:net.sourceforge.jtds.jdbc.JtdsPreparedStatement.notSupported的这种类型的语句不支持使用executeQuery(string)方法(net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:822)上的JtdsPreparedStatement.java:197)在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

问题答案:

有几件事值得检查:

  1. 使用其他别名。使用COUNT作为别名会带来麻烦。
  2. 查询对象不需要两次传递,一次是在语句准备期间传递,另一次是在执行期间传递。在con.prepareStatement(query);声明准备中使用它就足够了。

附录

怀疑jTDS是否支持将String
arg方法用于PreparedStatement。这样做的理由是,PreparedStatement.executeQuery()似乎已实现,而Statement.executeQuery(String)似乎已在PreparedStatement.executeQuery()中被重写以引发所述异常



 类似资料:
  • 我使用S#Arplite开发了webapp,用于构建一个查询,从许多表中获取一个列表。使用NHibernate版本3.3.1.4000 当应用程序运行时,我得到了一个错误,例如 这是我的代码

  • 在我的项目中,我面临着一个非常奇怪的问题。它与使用spring反应式webclient bulider调用rest API有关。它在本地和prod上也可以正常工作,但在向同一个endpoint发出3或4个请求后,会异常地给出以下错误。“org.springframework.web.server.MethodNotAllowedException:405方法\u不允许“请求方法'T'不受支持”这是

  • 问题内容: 尝试从数据库连接和检索数据时出现此类错误。 方法executeQuery()不能在PreparedStatement或CallableStatement上接受参数。 我的代码是这样的。 问题答案: 您不需要第二次使用queryString,因为您可以用以下方式“告诉” prepareStatement字符串: 这是正确的方法:

  • 尝试学习Spring-Boot,并提高我的Java技能。我一直收到错误声明“..java:error:release version 14不受支持..”。我的jdk在preferences页面上设置为jdk-11。我找不到jdk版本设置为14的地方。你知道去哪找吗?我正在使用IntelliJ IDEA Ultimate和最新版本的Kite和Spring-Boot。这里是我的扫描器脚本,用于探索扫描

  • 问题内容: 当我尝试使用Java 7连接URL(支持TLS 1.2且以前与Java 7兼容的供应商URL之一)时,发现以下异常: 这样我就启用了,并且 在那之后我也遇到了同样的问题。然后,我将Java版本升级到8,这样它就可以连接到URL而没有任何SSL问题。 如本博客所述,在Java 8中,默认设置为TLS 1.2,并且可以使用Java 7中的属性调整TLS 1.2 。在Java 7中,如果我根

  • 我试图对我的图像进行预处理,以便最终从预处理后的图像中找到轮廓。 它给了我一个错误说明:OpenCV错误:cvStartFindContours中不支持的格式或格式组合([Start]FindContours在模式下仅支持CV_8UC1图像!=CV_RETR_FLOODFILL,否则仅支持CV_32SC1图像) 我用的是opencv3.0