我有这种方法可以从MySQL数据库中按电影ID选择电影放映时间并将它们放在Time []中。但是,根据trace,它会在'? ORDER BY schedule_id'
附近抛出语法异常。
public Time[] getShowTimes(int movieId) {
List<Time> list = new ArrayList<Time>();
try {
sql = "SELECT schedule_time FROM schedule WHERE movie_id = ? ORDER BY schedule_id";
ps = conn.prepareStatement(sql);
ps.setInt(1, movieId);
rs = ps.executeQuery(sql);
while(rs.next()) {
list.add(rs.getTime(1));
}
} catch(SQLException se) {
se.printStackTrace();
}
Time[] times = new Time[list.size()];
times = list.toArray(times);
return times;
}
我跟着this示例(如果有帮助的话)。可能有什么不对?
答案 0 :(得分:2)
您正在executeQuery(String)
中调用PreparedStatement
方法,该通话仅从Statement
继承。但是Statement
只执行查询而没有任何PreparedStatement
占位符语义,因此错误。
相反,您想要调用executeQuery()
(no arguments) method。 SQL已经准备好了,并且所有占位符都已分配了值,因此不再需要SQL参数字符串。
rs = ps.executeQuery();