gpt4 book ai didi

java - executeQuery() 返回空结果集

转载 作者:行者123 更新时间:2023-11-29 15:43:38 24 4
gpt4 key购买 nike

我正在创建一个简单的应用程序,它使用 JDBC 从 MySQL 获取数据。我使用 dao 从数据库中获取数据。除了一个之外,所有其他都工作正常(所有 DAO 的代码都相同)。此外,我还手动提交 INSERT 和 UPDATE 方法。

即使我手动设置读提交隔离级别,Workbench 也会返回有效结果。

JDBCSessionDao创建方法:

public void create(Session session) throws SQLException{
try(PreparedStatement ps = conn.prepareStatement(INSERT_SESSION)){
conn.setAutoCommit(false);

LocalTime start = session.getStartTime();
LocalTime end = session.getEndTime();

System.out.println(start + ", " + end);
System.out.println(Time.valueOf(start) + ", " + Time.valueOf(end));

ps.setTime(1, Time.valueOf(start));
ps.setTime(2, Time.valueOf(end));
ps.setDate(3, Date.valueOf(session.getDate()));
ps.setLong(4, session.getMovieId());

ps.executeUpdate();

conn.commit();
conn.setAutoCommit(true);
}
catch (SQLException e){
logger.error(e.getMessage());
conn.rollback();
}
}

JDBCSessionDao findByDate 方法

public List<Session> findByDate(LocalDate date) {
List<Session> sessions = new ArrayList<>();
SessionMapper mapper = new SessionMapper();

try(PreparedStatement ps = conn.prepareStatement(SELECT_BY_DATE_ORDER_BY_TIME_ASC)){
ps.setDate(1, Date.valueOf(date));

ResultSet rs = ps.executeQuery();

System.out.println(rs.getFetchSize());

while(rs.next()){
Session s = mapper.extractFromResultSet(rs);
sessions.add(s);
}
}
catch (SQLException e){
logger.error(e.getMessage());
}

return sessions;
}

查询:

String SELECT_BY_DATE_ORDER_BY_TIME_ASC = "SELECT * FROM sessions WHERE session_date=? ORDER by start_time ASC";

JDBCDaoFactory getConnection() 方法:

private Connection getConnection(){
String url = "jdbc:mysql://localhost:3306/cinemajee?useLegacyDatetimeCode=false&serverTimezone=Europe/Kiev";
String user = "root";
String password = "root";

try{
Class.forName("com.mysql.cj.jdbc.Driver");
return DriverManager.getConnection(url, user, password);
}
catch (SQLException | ClassNotFoundException e){
e.printStackTrace();
throw new RuntimeException();
}
}

工作台查询结果: query result

最佳答案

尝试修改代码中的查询。也许 session_date 参数不起作用。所以改变一下:

"SELECT * FROM sessions WHERE session_date=? ORDER by start_time ASC"'

对此:

"SELECT * FROM sessions ORDER by start_time ASC LIMIT 5"'

关于java - executeQuery() 返回空结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57315580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com