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条件。