【问题标题】:Resultset not returning output结果集不返回输出
【发布时间】:2014-12-11 19:09:18
【问题描述】:

我正在尝试运行此代码,但没有输出。但是当我从终端运行 SQL 查询时,它可以工作。请帮忙。

    Statement stmt = conn.createStatement(); 
    ResultSet rset1=stmt.executeQuery("SELECT ShowTime FROM Movie M, screens s WHERE M.MovieID = s.MovieID AND M.MovieID= 01");

    while(rset1.next()){
        //String tite=(rset1.getTimestamp("title"));
        System.out.println(rset1.getString("Showtime"));
        //text_39.append((rset1.getString("Showtime"))+"\n"); 
        }

【问题讨论】:

  • 没有数据返回。通过在 sqlplus 等 sqlplus for oracle 或 toad 客户端中运行它来检查您的 sql。
  • 不确定您的 Java 问题,但作为 SQL 的建议,您应该使用 JOIN 而不是旧语法。 SELECT ShowTime FROM Movie M JOIN screens s ON M.MovieID = s.MovieID WHERE M.MovieID = 01
  • 如果 M.MovieID 是数字数据类型,01 将被截断为 1,这将无法与字符串数据类型“01”正确比较,您可能需要将“01”包装在抽动所以看起来像WHERE M.MovieID = s.MovieID AND M.MovieID= '01'
  • 还有,Showtime != ShowTime
  • 逻辑上,如果查询在查询窗口中返回结果而不是在 java 代码中,则问题是 A) 没有指向正确的 DB 具有您期望的数据 B) 逻辑写入输出有缺陷(“ShowTime”!= "Showtime") C) 当你在传递你没有在 Java 中捕获的 SQL 时遇到错误。 SO 1) 确认您正在使用与查询窗口中相同的权限连接到同一个数据库,2) 更新 ShowTime,3) 添加一些错误处理以查看 SQL 驱动程序中是否有错误,如果有,请报告错误消息。

标签: java sql resultset


【解决方案1】:

问题是ResultSet.getString(String) 不区分大小写。将值更改为 System.out.println(rset1.getString("ShowTime")); 应该可以解决您的问题

【讨论】:

    【解决方案2】:

    如果 M.MovieID 是数字数据类型,则 01 将被截断为 1,这将无法与字符串数据类型 '01' 正确比较,您可能需要将 '01' 包装在 tic 中,因此看起来像WHERE M.MovieID = s.MovieID AND M.MovieID= '01'

    我的想法是驱动程序和数据库引擎正在执行一些隐式转换,这可以防止语法错误,但会导致您在通过驱动程序运行时得不到任何结果。

    为了更好地回答这个问题,我需要知道电影表和屏幕表中的 MovieID 是什么数据类型。

    【讨论】:

      猜你喜欢
      • 2016-06-30
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2018-07-28
      • 2019-07-03
      • 1970-01-01
      • 2014-12-29
      • 2013-07-24
      相关资源
      最近更新 更多