質問編集履歴

6

コード修正

2019/10/01 08:08

投稿

asameshi
asameshi

スコア16

test CHANGED
File without changes
test CHANGED
@@ -120,7 +120,7 @@
120
120
 
121
121
  PreparedStatement pstmt = conn.prepareStatement(sql);
122
122
 
123
- pstmt.String(1,date);
123
+ pstmt.setTimestamp(1,date);
124
124
 
125
125
    rs = pstmt.executeQuery();
126
126
 

5

コード修正

2019/10/01 08:08

投稿

asameshi
asameshi

スコア16

test CHANGED
File without changes
test CHANGED
@@ -122,7 +122,7 @@
122
122
 
123
123
  pstmt.String(1,date);
124
124
 
125
-   rs = stmt.executeQuery(sql);
125
+   rs = pstmt.executeQuery();
126
126
 
127
127
 
128
128
 

4

本文修正

2019/10/01 07:52

投稿

asameshi
asameshi

スコア16

test CHANGED
File without changes
test CHANGED
@@ -3,10 +3,6 @@
3
3
  サイコロを作っておりまして、ログをDBに格納、取り出して表示、という機能を実装しています。
4
4
 
5
5
  現在ログの検索機能を実装しようとしています。
6
-
7
- `フォームから入力した日付`を使って、検索したいのですが、どのような方法があるか
8
-
9
- 教えて頂けないでしょうか?
10
6
 
11
7
 
12
8
 
@@ -17,14 +13,6 @@
17
13
 
18
14
 
19
15
  jspでformタグを使い、servletで入力されたデータの取得はできています。
20
-
21
- このあとの処理の流れが、調べてもよくわからなかったため質問させて頂きました。
22
-
23
-
24
-
25
- 入力された文字列を、一度Timestampに変換して、それをDBで参照したらいいのでしょうか?
26
-
27
- それとももっと良い方法があるのでしょうか?
28
16
 
29
17
 
30
18
 
@@ -37,8 +25,6 @@
37
25
  どうかお力を貸して頂けないでしょうか。
38
26
 
39
27
  よろしくお願い致します。
40
-
41
-
42
28
 
43
29
 
44
30
 
@@ -58,8 +44,6 @@
58
44
 
59
45
  現在のDAOとservletは下記のようになっています。
60
46
 
61
- ここからどう修正したら良いのかがわかりません。
62
-
63
47
 
64
48
 
65
49
  servlet
@@ -70,13 +54,19 @@
70
54
 
71
55
  String date = request.getParameter("date");
72
56
 
57
+ DateFormat sdf = new SimpleDateFormat("dd");
58
+
59
+
60
+
73
61
 
74
62
 
75
63
  List<Map<String, Object>> logList = null;
76
64
 
77
65
  try {
78
66
 
67
+ Timestamp d = new Timestamp(sdf.parse(date).getTime());
68
+
79
- logList = diceDao.searchDiceLog(date);
69
+ logList = diceDao.searchDiceLog(d);
80
70
 
81
71
  } catch (Exception e) {
82
72
 
@@ -100,7 +90,7 @@
100
90
 
101
91
  ```
102
92
 
103
- public List<Map<String, Object>> searchDiceLog(date) throws Exception {
93
+ public List<Map<String, Object>> searchDiceLog(Timestamp date) throws Exception {
104
94
 
105
95
  try {
106
96
 

3

誤字

2019/10/01 07:25

投稿

asameshi
asameshi

スコア16

test CHANGED
File without changes
test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
  try {
78
78
 
79
- logList = diceDao.loadDiceLog(date);
79
+ logList = diceDao.searchDiceLog(date);
80
80
 
81
81
  } catch (Exception e) {
82
82
 

2

追記

2019/10/01 04:09

投稿

asameshi
asameshi

スコア16

test CHANGED
File without changes
test CHANGED
@@ -22,13 +22,9 @@
22
22
 
23
23
 
24
24
 
25
- ```
26
-
27
25
  入力された文字列を、一度Timestampに変換して、それをDBで参照したらいいのでしょうか?
28
26
 
29
27
  それとももっと良い方法があるのでしょうか?
30
-
31
- ```
32
28
 
33
29
 
34
30
 
@@ -41,3 +37,119 @@
41
37
  どうかお力を貸して頂けないでしょうか。
42
38
 
43
39
  よろしくお願い致します。
40
+
41
+
42
+
43
+
44
+
45
+ __追記__
46
+
47
+
48
+
49
+ 不明点
50
+
51
+ ・日付での検索方法
52
+
53
+ ・日付検索のSQL
54
+
55
+
56
+
57
+ DBはpostgreSQLを使用しています。
58
+
59
+ 現在のDAOとservletは下記のようになっています。
60
+
61
+ ここからどう修正したら良いのかがわかりません。
62
+
63
+
64
+
65
+ servlet
66
+
67
+ ```
68
+
69
+      //jspから入力データを取得
70
+
71
+ String date = request.getParameter("date");
72
+
73
+
74
+
75
+ List<Map<String, Object>> logList = null;
76
+
77
+ try {
78
+
79
+ logList = diceDao.loadDiceLog(date);
80
+
81
+ } catch (Exception e) {
82
+
83
+ e.printStackTrace();
84
+
85
+ }
86
+
87
+ request.setAttribute("log",logList);
88
+
89
+
90
+
91
+ String path = "index.jsp";
92
+
93
+ RequestDispatcher dispatcher = request.getRequestDispatcher(path);
94
+
95
+ dispatcher.forward(request,response);
96
+
97
+ ```
98
+
99
+ Dao
100
+
101
+ ```
102
+
103
+ public List<Map<String, Object>> searchDiceLog(date) throws Exception {
104
+
105
+ try {
106
+
107
+ List<Map<String, Object>> list = new ArrayList<>();
108
+
109
+ Map<String, Object> map = new HashMap<>();
110
+
111
+ DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
112
+
113
+        
114
+
115
+        //DB接続
116
+
117
+ Class.forName("org.postgresql.Driver");
118
+
119
+ conn = DriverManager.getConnection(url,user,password);
120
+
121
+ conn.setAutoCommit(false);
122
+
123
+ stmt = conn.createStatement();
124
+
125
+        
126
+
127
+        //データ取得
128
+
129
+ String sql = "SELECT number,time FROM dice_log WHERE time = ? ORDER BY time DESC";
130
+
131
+ PreparedStatement pstmt = conn.prepareStatement(sql);
132
+
133
+ pstmt.String(1,date);
134
+
135
+   rs = stmt.executeQuery(sql);
136
+
137
+
138
+
139
+ while (rs.next()) {
140
+
141
+ map = new HashMap<>();
142
+
143
+ map.put("number",rs.getInt(1));
144
+
145
+ map.put("time",dateFormat.format(rs.getTimestamp(2)));
146
+
147
+ list.add(map);
148
+
149
+ }
150
+
151
+ return list;
152
+
153
+ }
154
+
155
+ ```

1

タイトル変更

2019/10/01 01:15

投稿

asameshi
asameshi

スコア16

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