Java初学者です。
サイコロを作っておりまして、ログをDBに格納、取り出して表示、という機能を実装しています。
現在ログの検索機能を実装しようとしています。
DBのテーブルにはtimeカラムと、numberカラムがあり、
今回はTimestamp型のtimeに格納されているデータの日付
を参照して取得したいです。
jspでformタグを使い、servletで入力されたデータの取得はできています。
入力するデータは、日付のみです。
例)「7」入力 => 7日のログを出力
どうかお力を貸して頂けないでしょうか。
よろしくお願い致します。
追記
不明点
・日付での検索方法
・日付検索のSQL
DBはpostgreSQLを使用しています。
現在のDAOとservletは下記のようになっています。
servlet
//jspから入力データを取得 String date = request.getParameter("date"); DateFormat sdf = new SimpleDateFormat("dd"); List<Map<String, Object>> logList = null; try { Timestamp d = new Timestamp(sdf.parse(date).getTime()); logList = diceDao.searchDiceLog(d); } catch (Exception e) { e.printStackTrace(); } request.setAttribute("log",logList); String path = "index.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(path); dispatcher.forward(request,response);
Dao
public List<Map<String, Object>> searchDiceLog(Timestamp date) throws Exception { try { List<Map<String, Object>> list = new ArrayList<>(); Map<String, Object> map = new HashMap<>(); DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); //DB接続 Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection(url,user,password); conn.setAutoCommit(false); stmt = conn.createStatement(); //データ取得 String sql = "SELECT number,time FROM dice_log WHERE time = ? ORDER BY time DESC"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setTimestamp(1,date); rs = pstmt.executeQuery(); while (rs.next()) { map = new HashMap<>(); map.put("number",rs.getInt(1)); map.put("time",dateFormat.format(rs.getTimestamp(2))); list.add(map); } return list; }
回答1件
あなたの回答
tips
プレビュー