質問編集履歴

2

DAO、とShowAllSurveyクラスを少し書き換えました

2020/03/23 03:08

投稿

chimo
chimo

スコア55

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,4 @@
1
- 別のクラスでhtmlを使い作ったアンケートフォームからアンケートを記入し、その結果を別のページ(ブラウザ?)で以下のように、順番に連続にテーブルのように表示するようにしたいです。
1
+ 別のクラスでhtmlを使い作ったアンケートフォームからアンケートを記入し、その結果を別のページ(ブラウザ?)で以下のように表示するようにしたいです。
2
-
3
- 例えば
4
2
 
5
3
  名前  性別  満足度  意見    時
6
4
 
@@ -12,15 +10,9 @@
12
10
 
13
11
  ポチ   1   2   疲れた   2020/03/15
14
12
 
15
- ーーーーーーーーーーーーーーーーーーーーーーーーー
13
+ ーーーーーーーーーーーーーーーーーーーーーーーーー           
16
-
17
-
14
+
18
-
19
-
20
-
21
- ・               
22
-
23
- 、とこんな感じに順番に連続で表として表示されるようにしたいです。
15
+ 、とこんな感じに結果を表として表示されるようにしたいです。
24
16
 
25
17
  以下ArrayListを使ってやってみましたが、難しかったです…
26
18
 
@@ -176,9 +168,7 @@
176
168
 
177
169
  System.out.println( " <th>満足度</th> "); // thタグ:見出しを表す(4列目)
178
170
 
179
- System.out.println( " <th>ご意見・ご感想</th> "); // thタグ:見出しを表す(5列目
171
+ System.out.println( " <th>ご意見・ご感想</th> "); // thタグ:見出しを表す(5列目
180
-
181
- System.out.println( " <th>回答時間</th> "); // thタグ:見出しを表す(6列目)
182
172
 
183
173
  System.out.println( " </tr> "); // trタグ(閉じ)
184
174
 
@@ -236,9 +226,81 @@
236
226
 
237
227
  ```java
238
228
 
229
+ package work;
230
+
231
+
232
+
233
+ import java.sql.Connection;
234
+
235
+ import java.sql.DriverManager;
236
+
237
+ import java.sql.PreparedStatement;
238
+
239
+ import java.sql.ResultSet;
240
+
241
+ import java.sql.SQLException;
242
+
243
+
244
+
245
+ /**----------------------------------------------------------------------*
246
+
247
+ *SurveyDaoメソッド
248
+
249
+ *----------------------------------------------------------------------**/
250
+
251
+ public class SurveyDao {
252
+
253
+ //-------------------------------------------
254
+
255
+ //データベースへの接続情報
256
+
257
+ //-------------------------------------------
258
+
259
+
260
+
261
+ //JDBCドライバの相対パス
262
+
263
+ //※バージョンによって変わる可能性があります(MySQL5系の場合は「com.mysql.jdbc.Driver」)
264
+
265
+ String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
266
+
267
+
268
+
269
+ //接続先のデータベース
270
+
271
+ //※データベース名が「test_db」でない場合は該当の箇所を変更してください
272
+
273
+ String JDBC_URL = "jdbc:mysql://localhost/test_db?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false";
274
+
275
+
276
+
277
+ //接続するユーザー名
278
+
279
+ //※ユーザー名が「test_user」でない場合は該当の箇所を変更してください
280
+
281
+ String USER_ID = "test_user";
282
+
283
+
284
+
285
+ //接続するユーザーのパスワード
286
+
287
+ //※パスワードが「test_pass」でない場合は該当の箇所を変更してください
288
+
289
+ String USER_PASS = "test_pass";
290
+
291
+
292
+
293
+ /**----------------------------------------------------------------------*
294
+
295
+ *doSelectメソッド
296
+
297
+ *----------------------------------------------------------------------**/
298
+
299
+
300
+
239
- public static String COMMA = ","; //コンマ(定数)
301
+ public static String COMMA = ","; //コンマ(定数)
240
-
302
+
241
- public void doSelect(SurveyDto dto) {
303
+ public boolean doSelect() {
242
304
 
243
305
 
244
306
 
@@ -312,6 +374,8 @@
312
374
 
313
375
  ResultSet rs = null ; // ResultSet(SQL抽出結果)格納用変数
314
376
 
377
+ boolean isSuccess = true ;
378
+
315
379
 
316
380
 
317
381
  try {
@@ -338,25 +402,21 @@
338
402
 
339
403
  StringBuffer buf = new StringBuffer() ;
340
404
 
341
- buf.append(" SELECT ");
405
+ buf.append(" SELECT ");
342
-
406
+
343
- buf.append(" name , ");
407
+ buf.append(" NAME , ");
344
-
408
+
345
- buf.append(" age , ");
409
+ buf.append(" AGE , ");
346
-
410
+
347
- buf.append(" sex , ");
411
+ buf.append(" SEX , ");
348
-
412
+
349
- buf.append(" satisfaction_level , ");
413
+ buf.append(" SATISFACTION_LEVEL , ");
350
-
414
+
351
- buf.append(" message ");
415
+ buf.append(" MESSAGE ");
352
-
416
+
353
- buf.append(" FROM ");
417
+ buf.append(" FROM ");
354
-
418
+
355
- buf.append(" survey ");
419
+ buf.append(" SURVEY ");
356
-
357
- buf.append(" ORDER BY ");
358
-
359
- buf.append(" name ");
360
420
 
361
421
 
362
422
 
@@ -410,29 +470,39 @@
410
470
 
411
471
 
412
472
 
473
+ //SQL文の実行
474
+
475
+ ps.executeUpdate();
476
+
477
+
478
+
413
479
  } catch (SQLException e) {
414
480
 
415
481
  e.printStackTrace();
416
482
 
417
483
 
418
484
 
485
+ //実行結果を例外発生として更新
486
+
487
+ isSuccess = false ;
488
+
489
+
490
+
419
491
  } finally {
420
492
 
421
493
  //-------------------------------------------
422
494
 
423
- // ⑤接続解除
495
+ //トランザクション終了
424
-
496
+
425
- //-------------------------------------------
497
+ //-------------------------------------------
498
+
426
-
499
+ if(isSuccess){
427
-
428
-
500
+
429
- //ResultSetオブジェクの接続解除
501
+ //明示的にコミッを実施
430
-
431
- if (rs != null) { //接続が確認できている場合のみ実施
432
502
 
433
503
  try {
434
504
 
435
- rs.close(); //接続の解除
505
+ con.commit();
436
506
 
437
507
  } catch (SQLException e) {
438
508
 
@@ -440,10 +510,34 @@
440
510
 
441
511
  }
442
512
 
513
+
514
+
515
+ }else{
516
+
517
+ //明示的にロールバックを実施
518
+
519
+ try {
520
+
521
+ con.rollback();
522
+
523
+ } catch (SQLException e) {
524
+
525
+ e.printStackTrace();
526
+
527
+ }
528
+
443
529
  }
444
530
 
445
531
 
446
532
 
533
+ //-------------------------------------------
534
+
535
+ //接続の解除
536
+
537
+ //-------------------------------------------
538
+
539
+
540
+
447
541
  //PreparedStatementオブジェクトの接続解除
448
542
 
449
543
  if (ps != null) { //接続が確認できている場合のみ実施
@@ -478,102 +572,24 @@
478
572
 
479
573
  }
480
574
 
575
+
576
+
481
577
  }
482
578
 
579
+
580
+
581
+ //実行結果を返す
582
+
583
+ return isSuccess;
584
+
483
585
  }
484
586
 
587
+
588
+
589
+
590
+
591
+ }
592
+
593
+
594
+
485
595
  ```
486
-
487
- 【DAO】
488
-
489
- ```java
490
-
491
- package work;
492
-
493
-
494
-
495
- import java.sql.Timestamp;
496
-
497
- public class SurveyDto {
498
-
499
-
500
-
501
- //----------------------------------------------------------------
502
-
503
- //フィールド
504
-
505
- //----------------------------------------------------------------
506
-
507
- private String name ; //名前
508
-
509
- private int age ; //年齢
510
-
511
- private int sex ; //性別
512
-
513
- private int satisfactionLevel ; //満足度
514
-
515
- private String message ; //メッセージ
516
-
517
- private Timestamp time ; //更新時刻
518
-
519
-
520
-
521
- //----------------------------------------------------------------
522
-
523
- //getter/setter
524
-
525
- //----------------------------------------------------------------
526
-
527
-
528
-
529
- //getter/setter(対象フィールド:name)
530
-
531
- public String getName() { return name; }
532
-
533
- public void setName(String name) { this.name = name; }
534
-
535
-
536
-
537
- //getter/setter(対象フィールド:age)
538
-
539
- public int getAge() { return age; }
540
-
541
- public void setAge(int age) { this.age = age; }
542
-
543
-
544
-
545
- //getter/setter(対象フィールド:sex)
546
-
547
- public int getSex() { return sex; }
548
-
549
- public void setSex(int sex) { this.sex = sex; }
550
-
551
-
552
-
553
- //getter/setter(対象フィールド:satisfactionLevel)
554
-
555
- public int getSatisfactionLevel() { return satisfactionLevel; }
556
-
557
- public void setSatisfactionLevel(int satisfactionLevel) { this.satisfactionLevel = satisfactionLevel; }
558
-
559
-
560
-
561
- //getter/setter(対象フィールド:message)
562
-
563
- public String getMessage() { return message; }
564
-
565
- public void setMessage(String message) { this.message = message; }
566
-
567
-
568
-
569
- //getter/setter(対象フィールド:time)
570
-
571
- public Timestamp getTime() { return time; }
572
-
573
- public void setTime(Timestamp time) { this.time = time; }
574
-
575
-
576
-
577
- }
578
-
579
- ```

1

書いたとおもっていたコードが書けていなかったのでそこを書いてもう一度あげなおしました

2020/03/23 03:07

投稿

chimo
chimo

スコア55

test CHANGED
File without changes
test CHANGED
@@ -34,7 +34,11 @@
34
34
 
35
35
  import java.io.IOException;
36
36
 
37
+ import java.sql.Timestamp;
38
+
37
- import java.io.PrintWriter;
39
+ import java.util.ArrayList;
40
+
41
+ import java.util.List;
38
42
 
39
43
 
40
44
 
@@ -84,119 +88,129 @@
84
88
 
85
89
  //リクエスト(受信データ)の文字コードを設定
86
90
 
87
- request.setCharacterEncoding("UTF-8");
91
+ request.setCharacterEncoding("UTF-8");
92
+
93
+
94
+
88
-
95
+ //リクエストパラメータを取得
96
+
89
-
97
+ String name = request.getParameter("NAME"); //リクエストパラメータ(NAME)
98
+
99
+ int age = Integer.parseInt(request.getParameter("AGE")) ; //リクエストパラメータ(AGE)
100
+
101
+ int sex = Integer.parseInt( request.getParameter("SEX") ); //リクエストパラメータ(SEX)
102
+
103
+ int satisfactionLevel = Integer.parseInt( request.getParameter("SATISFACTION_LEVEL") ); //リクエストパラメータ(SATISFACTION_LEVEL)
104
+
105
+ String message = request.getParameter("MESSAGE"); //リクエストパラメータ(MESSAGE)
106
+
107
+
108
+
109
+ //アンケートデータ(SurveyDto型)の作成
110
+
111
+ SurveyDto dto = new SurveyDto();
112
+
113
+ dto.setName( name );
114
+
115
+ dto.setAge( age );
116
+
117
+ dto.setSex( sex );
118
+
119
+ dto.setSatisfactionLevel( satisfactionLevel );
120
+
121
+ dto.setMessage( message );
122
+
123
+ dto.setTime( new Timestamp(System.currentTimeMillis()) ); //現在時刻を更新時刻として設定
124
+
125
+
90
126
 
91
127
  //ビジネスロジックを呼び出す
92
128
 
93
- BusinessLogic logic_ex = new BusinessLogic();
129
+ BusinessLogic logic_ex = new BusinessLogic();
94
-
130
+
95
- logic_ex.executeSelectSurvey(dto);
131
+ logic_ex.executeSelectSurvey(dto);
96
-
97
-
98
-
99
- //リクエストパラメータを取得
100
-
101
- String name = request.getParameter("NAME"); //リクエストパラメータ(NAME)
102
-
103
- int age = Integer.parseInt( request.getParameter("AGE") ); //リクエストパラメータ(AGE)
104
-
105
- int sex = Integer.parseInt( request.getParameter("SEX") ); //リクエストパラメータ(SEX)
106
-
107
- int satisfactionLevel = Integer.parseInt( request.getParameter("SATISFACTION_LEVEL") ); //リクエストパラメータ(SATISFACTION_LEVEL)
108
-
109
- String message = request.getParameter("MESSAGE"); //リクエストパラメータ(MESSAGE)
110
132
 
111
133
 
112
134
 
113
135
  //投稿内容のリスト
114
136
 
115
- List<String> postContentList = new ArrayList<String>();
137
+ List<String> postContentList = new ArrayList<String>() ;
116
-
138
+
117
- postContentList.add( name );
139
+ postContentList.add( name ) ;
118
-
140
+
119
- postContentList.add( age );
141
+ postContentList.add( "age" ) ;
120
-
142
+
121
- postContentList.add( sex );
143
+ postContentList.add( "sex" ) ;
122
-
144
+
123
- postContentList.add( satisfactionLevel );
145
+ postContentList.add( "satisfaction_level" ) ;
124
-
146
+
125
- postContentList.add( message );
147
+ postContentList.add( message ) ;
126
-
127
-
148
+
149
+
128
150
 
129
151
  //HTML文書(HTMLテーブル作成Sample画面)の出力
130
152
 
131
- out.println( "<html> ");
153
+ System.out.println( "<html>" ) ;
132
-
154
+
133
- out.println( "<head> ");
155
+ System.out.println( "<head>" ) ;
134
-
156
+
135
- out.println( " <title>アンケート回答一覧</title> ");
157
+ System.out.println( "<title>アンケート回答一覧</title>" ) ;
136
-
158
+
137
- out.println( "</head> ");
159
+ System.out.println( "</head>" ) ;
138
-
160
+
139
- out.println( "<body> ");
161
+ System.out.println( "<body>" ) ;
140
-
162
+
141
- out.println( " <h2>ご協力ありがとうございました!</h2> ");
163
+ System.out.println( "<h2>アンケート回答一覧</h2>" ) ;
142
-
143
-
144
-
145
- //--------------▼テーブルの作成▼--------------
164
+
146
-
147
-
148
-
165
+
166
+
149
- out.println( " <table class=\"list\" border=1 id=\"TABLE\"> "); //tableタグ:テーブル全体を表す
167
+ System.out.println( "< table class=\"list\" border=1 id=\"TABLE\"> " ) ;
150
-
168
+
151
- out.println( " <tr bgcolor=\"#c0c0c0\"> "); // trタグ:1行分の情報を表す(1行目)
169
+ System.out.println( " <tr bgcolor=\"#c0c0c0\"> "); // trタグ:1行分の情報を表す(1行目)
152
-
170
+
153
- out.println( " <th>名前</th> "); // thタグ:見出しを表す(1列目)
171
+ System.out.println( " <th>名前</th> "); // thタグ:見出しを表す(1列目)
154
-
172
+
155
- out.println( " <th>年齢</th> "); // thタグ:見出しを表す(2列目)
173
+ System.out.println( " <th>年齢</th> "); // thタグ:見出しを表す(2列目)
156
-
174
+
157
- out.println( " <th>性別</th> "); // thタグ:見出しを表す(3列目)
175
+ System.out.println( " <th>性別</th> "); // thタグ:見出しを表す(3列目)
158
-
176
+
159
- out.println( " <th>満足度</th> "); // thタグ:見出しを表す(4列目)
177
+ System.out.println( " <th>満足度</th> "); // thタグ:見出しを表す(4列目)
160
-
178
+
161
- out.println( " <th>ご意見・ご感想</th> "); // thタグ:見出しを表す(5列目)
179
+ System.out.println( " <th>ご意見・ご感想</th> "); // thタグ:見出しを表す(5列目)
162
-
180
+
163
- out.println( " <th>回答時間</th> "); // thタグ:見出しを表す(6列目)
181
+ System.out.println( " <th>回答時間</th> "); // thタグ:見出しを表す(6列目)
164
-
182
+
165
- out.println( " </tr> "); // trタグ(閉じ)
183
+ System.out.println( " </tr> "); // trタグ(閉じ)
166
184
 
167
185
 
168
186
 
169
187
  for (int i = 0; i < postContentList.size(); i++) {
170
188
 
171
-
172
-
173
- out.println(" <tr> "); // trタグ:1行分の情報を表す(2行目以降)
189
+ System.out.println(" <tr> ");
174
-
190
+
175
- out.println(" <td>" + postContentList.get(i) + "</td> "); // tdタグ:データを表す(1列目)
191
+ System.out.println(" <td>" + postContentList.get(i) + "</td> ");
176
-
192
+
177
- out.println(" </tr> "); // trタグ(閉じ)
193
+ System.out.println(" </tr> ");
194
+
195
+
178
196
 
179
197
  }
180
198
 
181
-
182
-
199
+
200
+
183
- out.println( " </table> "); //tableタグ(閉じ)
201
+ System.out.println(" </table> ");
184
-
185
-
186
-
187
- //--------------▲テーブルの作成▲--------------
202
+
188
-
189
-
190
-
203
+
204
+
191
- out.println(" <a href=\"InputSurvey\">アンケート画面へ戻る</a> "); //前の画面に戻るリンクの設定
205
+ System.out.println(" <a href=\"InputSurvey\">アンケート画面へ戻る</a> "); //前の画面に戻るリンクの設定
192
-
193
-
194
-
206
+
207
+
208
+
195
- out.println( "</body> ");
209
+ System.out.println( "</body> ");
196
-
210
+
197
- out.println( "</html> ");
211
+ System.out.println( "</html> ");
198
-
199
-
212
+
213
+
200
214
 
201
215
  }
202
216
 
@@ -214,6 +228,8 @@
214
228
 
215
229
  }
216
230
 
231
+
232
+
217
233
  ```
218
234
 
219
235
  【DAO】
@@ -478,16 +494,6 @@
478
494
 
479
495
  import java.sql.Timestamp;
480
496
 
481
-
482
-
483
- /**----------------------------------------------------------------------*
484
-
485
- *■■■SurveyDtoクラス■■■
486
-
487
- *概要:DTO(「survey」テーブル)
488
-
489
- *----------------------------------------------------------------------**/
490
-
491
497
  public class SurveyDto {
492
498
 
493
499