質問するログイン新規登録

質問編集履歴

6

コード修正

2019/10/01 08:08

投稿

asameshi
asameshi

スコア16

title CHANGED
File without changes
body CHANGED
@@ -59,7 +59,7 @@
59
59
         //データ取得
60
60
  String sql = "SELECT number,time FROM dice_log WHERE time = ? ORDER BY time DESC";
61
61
  PreparedStatement pstmt = conn.prepareStatement(sql);
62
- pstmt.String(1,date);
62
+ pstmt.setTimestamp(1,date);
63
63
    rs = pstmt.executeQuery();
64
64
 
65
65
  while (rs.next()) {

5

コード修正

2019/10/01 08:08

投稿

asameshi
asameshi

スコア16

title CHANGED
File without changes
body CHANGED
@@ -60,7 +60,7 @@
60
60
  String sql = "SELECT number,time FROM dice_log WHERE time = ? ORDER BY time DESC";
61
61
  PreparedStatement pstmt = conn.prepareStatement(sql);
62
62
  pstmt.String(1,date);
63
-   rs = stmt.executeQuery(sql);
63
+   rs = pstmt.executeQuery();
64
64
 
65
65
  while (rs.next()) {
66
66
  map = new HashMap<>();

4

本文修正

2019/10/01 07:52

投稿

asameshi
asameshi

スコア16

title CHANGED
File without changes
body CHANGED
@@ -1,25 +1,18 @@
1
1
  Java初学者です。
2
2
  サイコロを作っておりまして、ログをDBに格納、取り出して表示、という機能を実装しています。
3
3
  現在ログの検索機能を実装しようとしています。
4
- `フォームから入力した日付`を使って、検索したいのですが、どのような方法があるか
5
- 教えて頂けないでしょうか?
6
4
 
7
5
  DBのテーブルにはtimeカラムと、numberカラムがあり、
8
6
  今回は`Timestamp型のtimeに格納されているデータの日付`を参照して取得したいです。
9
7
 
10
8
  jspでformタグを使い、servletで入力されたデータの取得はできています。
11
- このあとの処理の流れが、調べてもよくわからなかったため質問させて頂きました。
12
9
 
13
- 入力された文字列を、一度Timestampに変換して、それをDBで参照したらいいのでしょうか?
14
- それとももっと良い方法があるのでしょうか?
15
-
16
10
  入力するデータは、日付のみです。
17
11
  例)「7」入力 => 7日のログを出力
18
12
 
19
13
  どうかお力を貸して頂けないでしょうか。
20
14
  よろしくお願い致します。
21
15
 
22
-
23
16
  __追記__
24
17
 
25
18
  不明点
@@ -28,16 +21,18 @@
28
21
 
29
22
  DBはpostgreSQLを使用しています。
30
23
  現在のDAOとservletは下記のようになっています。
31
- ここからどう修正したら良いのかがわかりません。
32
24
 
33
25
  servlet
34
26
  ```
35
27
       //jspから入力データを取得
36
28
  String date = request.getParameter("date");
29
+ DateFormat sdf = new SimpleDateFormat("dd");
37
30
 
31
+
38
32
  List<Map<String, Object>> logList = null;
39
33
  try {
34
+ Timestamp d = new Timestamp(sdf.parse(date).getTime());
40
- logList = diceDao.searchDiceLog(date);
35
+ logList = diceDao.searchDiceLog(d);
41
36
  } catch (Exception e) {
42
37
  e.printStackTrace();
43
38
  }
@@ -49,7 +44,7 @@
49
44
  ```
50
45
  Dao
51
46
  ```
52
- public List<Map<String, Object>> searchDiceLog(date) throws Exception {
47
+ public List<Map<String, Object>> searchDiceLog(Timestamp date) throws Exception {
53
48
  try {
54
49
  List<Map<String, Object>> list = new ArrayList<>();
55
50
  Map<String, Object> map = new HashMap<>();

3

誤字

2019/10/01 07:25

投稿

asameshi
asameshi

スコア16

title CHANGED
File without changes
body CHANGED
@@ -37,7 +37,7 @@
37
37
 
38
38
  List<Map<String, Object>> logList = null;
39
39
  try {
40
- logList = diceDao.loadDiceLog(date);
40
+ logList = diceDao.searchDiceLog(date);
41
41
  } catch (Exception e) {
42
42
  e.printStackTrace();
43
43
  }

2

追記

2019/10/01 04:09

投稿

asameshi
asameshi

スコア16

title CHANGED
File without changes
body CHANGED
@@ -10,13 +10,69 @@
10
10
  jspでformタグを使い、servletで入力されたデータの取得はできています。
11
11
  このあとの処理の流れが、調べてもよくわからなかったため質問させて頂きました。
12
12
 
13
- ```
14
13
  入力された文字列を、一度Timestampに変換して、それをDBで参照したらいいのでしょうか?
15
14
  それとももっと良い方法があるのでしょうか?
16
- ```
17
15
 
18
16
  入力するデータは、日付のみです。
19
17
  例)「7」入力 => 7日のログを出力
20
18
 
21
19
  どうかお力を貸して頂けないでしょうか。
22
- よろしくお願い致します。
20
+ よろしくお願い致します。
21
+
22
+
23
+ __追記__
24
+
25
+ 不明点
26
+ ・日付での検索方法
27
+ ・日付検索のSQL
28
+
29
+ DBはpostgreSQLを使用しています。
30
+ 現在のDAOとservletは下記のようになっています。
31
+ ここからどう修正したら良いのかがわかりません。
32
+
33
+ servlet
34
+ ```
35
+      //jspから入力データを取得
36
+ String date = request.getParameter("date");
37
+
38
+ List<Map<String, Object>> logList = null;
39
+ try {
40
+ logList = diceDao.loadDiceLog(date);
41
+ } catch (Exception e) {
42
+ e.printStackTrace();
43
+ }
44
+ request.setAttribute("log",logList);
45
+
46
+ String path = "index.jsp";
47
+ RequestDispatcher dispatcher = request.getRequestDispatcher(path);
48
+ dispatcher.forward(request,response);
49
+ ```
50
+ Dao
51
+ ```
52
+ public List<Map<String, Object>> searchDiceLog(date) throws Exception {
53
+ try {
54
+ List<Map<String, Object>> list = new ArrayList<>();
55
+ Map<String, Object> map = new HashMap<>();
56
+ DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
57
+        
58
+        //DB接続
59
+ Class.forName("org.postgresql.Driver");
60
+ conn = DriverManager.getConnection(url,user,password);
61
+ conn.setAutoCommit(false);
62
+ stmt = conn.createStatement();
63
+        
64
+        //データ取得
65
+ String sql = "SELECT number,time FROM dice_log WHERE time = ? ORDER BY time DESC";
66
+ PreparedStatement pstmt = conn.prepareStatement(sql);
67
+ pstmt.String(1,date);
68
+   rs = stmt.executeQuery(sql);
69
+
70
+ while (rs.next()) {
71
+ map = new HashMap<>();
72
+ map.put("number",rs.getInt(1));
73
+ map.put("time",dateFormat.format(rs.getTimestamp(2)));
74
+ list.add(map);
75
+ }
76
+ return list;
77
+ }
78
+ ```

1

タイトル変更

2019/10/01 01:15

投稿

asameshi
asameshi

スコア16

title CHANGED
@@ -1,1 +1,1 @@
1
- Java DBにTimestamp型で格納したデータの取り出し方を教えて頂けませんか。
1
+ Java DBにTimestamp型で格納したデータの取り出し方を教えて頂けないでしょうか。
body CHANGED
File without changes