Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 即使数据存在,ResultSet也始终返回null?_Java_Jdbc - Fatal编程技术网

Java 即使数据存在,ResultSet也始终返回null?

Java 即使数据存在,ResultSet也始终返回null?,java,jdbc,Java,Jdbc,以下代码段始终返回null。谁能告诉我出了什么错吗?我在数据库中尝试了该查询,但行确实存在 public int[] getStats(String fabrik) { StringBuffer sql = new StringBuffer( "SELECT TRAINS_IN_USE, FREE_TRAINS, LOADED_TRAINS, LATE_TRAINS, DELIVERING_TRAINS, INCOMING_TRAINS, PALLETS_IN_STOR

以下代码段始终返回
null
。谁能告诉我出了什么错吗?我在数据库中尝试了该查询,但行确实存在

public int[] getStats(String fabrik) {

    StringBuffer sql = new StringBuffer(
        "SELECT TRAINS_IN_USE, FREE_TRAINS, LOADED_TRAINS, LATE_TRAINS, DELIVERING_TRAINS, INCOMING_TRAINS, PALLETS_IN_STORAGE FROM GRAPHSTATS where log_time like '%14-NOV-19 11:24:57%' ");
    // log_time = (select max(log_time) from graphstats
    ResultSet rs = null;
    PreparedStatement pstmt = null;
    if (fabrik != null) {
        sql.append(" AND fabrik = ?");
    }
    String sq = sql.toString();
    try {
        pstmt = connection.prepareStatement(sq);
        if (fabrik != null) {
            pstmt.setString(1, fabrik);
        }
        rs = pstmt.executeQuery();
        if (rs.next()) {
            return new int[] {rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getInt(4), rs.getInt(5), rs.getInt(6), rs.getInt(7)};
        }

    } catch (SQLException e) {
        Logger.error(
            this.getClass().getSimpleName() + "." + CurrentMethodName.getCurrentMethodName() + " Exception: " + e.getMessage(), null);
    }
    return null;
}

你好当你问问题时,文本区右侧有一个大橙色的“如何设置格式”框,其中包含有用的信息。还有一个工具栏,上面满是格式辅助工具。还有一个[?]按钮提供格式化帮助。还有一个预览区,显示你的帖子发布时的样子,位于文本区和“发布你的问题”按钮之间(这样你就必须滚动过去才能找到按钮,以鼓励你查看)。把你的帖子说清楚,并证明你花了时间这样做,可以提高你得到好答案的机会。你的问题文本说“……代码片段总是会回来。”根据你的问题标题,当我修正格式并将问题放在顶部时,我在句子末尾添加了
null
。如果您真正的意思是“返回”,请使用“编辑”链接。而不是“返回
null
”。如果有任何匹配行,则该代码可以工作。(有些事情您可能会更改,例如使用try with resources--但它会起作用。)我怀疑问题在于您试图匹配
日期
日期时间
列或类似列,并且您用于检查数据库查询的工具使用的日期/时间格式与代码不同,因此,类似于的
在查询工具中起作用,但在实际代码中不起作用,因为
日期
/
日期时间
正在转换为不同的字符串。如果您说在db编辑器中使用的是完全相同的查询,我还怀疑您的连接有问题(正如@T.J.Crowder所指出的)也许您的查询和运行方式有问题。我的意思是,当您在数据库管理中运行查询时,它可能会受到时区和日期格式的影响,而当您在应用程序中运行查询时,JDBC会完成这项工作。我看到您有一个WHERE条件,它使用文本字符串过滤log_time列中的数据。尝试使用real timestamp数据类型或格式,并将列转换为正确的数据类型,并使用BETWEEN条件。