【发布时间】:2015-06-10 09:52:22
【问题描述】:
我正在尝试使用preparedStatements 从表IsSELECTED 中选择一条记录。我的表有 3 个字段(日期(DATETIME)、早上(BOOL)、中午(BOOL)、晚上(BOOL))和一个包含这些值的记录(2013-12-12、0、0、0)。我的方法尝试选择具有给定日期的记录。
public void getTodayInfo(HttpSession session, String date)
throws ClassNotFoundException, SQLException{
System.out.println("flag1");
String sq = "SELECT date, morning, noon, night FROM IsSELECTED WHERE date='?'";
try {
System.out.println("flag2");
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection(path);
stm = c.prepareStatement(sq);
stm.setString(1, date);
System.out.println("flag3");
ResultSet rs = stm.executeQuery(sq);
while (rs.next()) {
System.out.println("flag4");
Shift s = new Shift(rs.getString(date), rs.getBoolean("morning"), rs.getBoolean("noon"), rs.getBoolean("night"));
System.out.println("flag5" + s.toString());
session.setAttribute("shiftsToday", s);
}
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
if (stm != null)
stm.close();
if (c != null)
c.close();
}
System.out.println("Goodbye!");
}
然后什么也没有发生。我放了一些System.out.println 看看我哪里有问题,我得到了这个
flag1
flag2
假设它与任何记录都不匹配(但无论如何我看到我的表有这条记录)为什么不打印flag3?
【问题讨论】:
-
将
SQLException更改为Exception看看会发生什么。你确定没有抛出异常吗?Goodbye打印出来了吗? -
日期=trunc(?);如果您的列是 Date 类型,您还必须使用 rs.getDate。
-
我想应该是
getString("date") -
您能否停止使用 [servlets] 而不是 [jdbc] 标记 JDBC 问题?这不是你第一次犯这个史诗般的错误。作为设计提示,您应该将 servlet 类之外的所有 JDBC 代码移动到可重用的 DAO 类中,然后您可以使用带有
main()方法的 Java 应用程序类轻松测试该类,最终只需在您的 servlet 类中导入/调用。 -
好的,我会记住的.. thx
标签: java sql sqlite jdbc prepared-statement