【发布时间】:2014-04-23 07:26:08
【问题描述】:
我正在尝试使用具有数据库中定义的另一个属性的 Java 函数来查询我的数据库。该语句不会产生错误。但是,输出是错误的。输出的结果为空,但从我的检查来看,它不为空。请问谁能告诉我我需要做什么?如何在 SQl 语句中使用 JAVA 函数?
expired_rows = dbMngr.runQuery(String.format("SELECT ID FROM Student WHERE 'System.currentTimeMillis()' - ArrivalTime > (%s) ", 5000));}
if (expired_rows == null) {
System.out.println("The number of expired row is " + expired_rows);
}
if (expired_rows != null) {
System.out.println("The number of expired row is " + expired_rows.length );
}
【问题讨论】:
-
long l = System.currentTimeMillis();然后在你的SQL语句中使用l的值。 -
使用 prepd stmt.long l = System.currentTimeMillis() 时出现一些错误; String query = "select id from Student where ? - ArrivalTime > 5000";尝试 { PreparedStatement expired_row = con.prepareStatement(query); expired_row.setLong(1, l); expired_row.execute();结果集 res = expired_row.getResultSet(); if (res == null) { System.out.println("过期行数为" + res); expired_rows.length ); } if (res != null) { System.out.println("过期行数为" + res); System.out.println("过期行数为" + res.length ); }
-
ResultSet res =expired_row.executeQuery();然后通过
while (rs.next){i++)循环计算行数。我认为空值检查是多余的——executeQuery 要么抛出 SQLException 要么返回 ResultSet——我认为它永远不会返回空值,如果确实如此,通常意味着错误是完全不可恢复的 -
感谢 Dave,我仍然收到错误消息:线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException。你觉得这可能是原因:String query = "select id from Student where ? - ArrivalTime > 5000"?
标签: java mysql sql function arithmetic-expressions