質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

3回答

1880閲覧

Javaの添削をお願いします。

yk-211

総合スコア34

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2015/06/10 08:08

編集2015/06/10 10:15

さらに追記します。

lang

1if (request.getParameter("deleteFlag") == "0") { 2 // 更新処理 3 return this.doUpdate(request, con); 4 } else { 5 // 削除処理 6 return this.doDelete(request, con); 7 } 8

としてみたのですが更新の場合、削除の場合ともにDELETE文を呼んでしまいます。deleteFlagには初期値で0が入っています。

追記です。

lang

1if (request.getParameter("update") != null) { 2 // 更新処理 3 return this.doUpdate(request, con); 4 } else { 5 // 削除処理 6 return this.doDelete(request, con); 7 }

の部分の("update") != null)を("deleteFlag") == 0)
とするとうまくいくと思うのですがString型とint型のため
値をこのまま入れることが出来ません。
うまく入れるためにはどうしたらよろしいでしょうか。

###前提・実現したいこと
こんにちは。
質問をさせてください。

ただいまSQLに接続するJavaのソースを書いておりまして、DELETEを実行した際に
UPDATEを実行するようになってしまっております。
おそらく45行目のあたりからが特に怪しいのですが、どのように直してもうまくいきません。
もしお分かりになる方がおられましたら、長いソースになりますがよろしくお願いいたします。かなり省略しています。
###ソースコード

lang

1public class CustomerDetail extends AbstractBizLogic { 2 private static final long serialVersionUID = 1L; 3 4 /** リクエストURL */ 5 private String requestPageUrl = "/page/customerDetail.jsp"; 6 7 /** 一覧表示画面URL */ 8 private String customerListUrl = "/page/customerList.jsp"; 9 10 /** 11 * コンストラクタ 12 */ 13 public CustomerDetail() { 14 super(); 15 } 16 17 /** 18 * @see common.AbstractBizLogic#getRequestPageUrl() 19 */ 20 protected String getRequestPageUrl() { 21 return requestPageUrl; 22 } 23 24 /** 25 * @see common.AbstractBizLogic#execute(HttpServletRequest,HttpServletResponse, 26 * Connection) 27 */ 28 protected ProcessResult execute(HttpServletRequest request, 29 HttpServletResponse response, Connection con) throws Exception { 30 if (request.getParameter("backList") != null) { 31 // 一覧へ戻る 32 ProcessResult result = new ProcessResult(); 33 result.setUrl(customerListUrl); 34 result.setNormalEndFlg(true); 35 36 super.setSessionAttribute("id", ""); 37 super.setSessionAttribute("name", ""); 38 super.setSessionAttribute("kana", ""); 39 super.setSessionAttribute("gender", ""); 40 41 return result; 42 } 43 44 if (request.getParameter("processType") == null) { 45 // 登録画面初期表示 46 return createInsertModoResult(); 47 } else if (request.getParameter("processType").equals("disp")) { 48 // 更新・削除初期表示 49 return this.doDispDetails(request, con); 50 } else if (request.getParameter("processType").equals("insert")) { 51 // 登録処理 52 return this.doInsert(request, con); 53 } else if (request.getParameter("processType").equals("update")) { 54 if (request.getParameter("update") != null) { 55 // 更新処理 56 return this.doUpdate(request, con); 57 } else { 58 // 削除処理 59 return this.doDelete(request, con); 60 } 61 } else { 62 ProcessResult result = new ProcessResult(); 63 result.setUrl(requestPageUrl); 64 result.setNormalEndFlg(false); 65 66 // 処理モードをセットする。 67 super.setSessionAttribute("processType", ""); 68 super.setErrMsg("不正なアクセス"); 69 return result; 70 } 71 } 72 73 /** 74 * ユーザーマスタ情報を検索し詳細画面表示します。 75 * 76 * @param request 77 * リクエスト情報 78 * @param con 79 * コネクション 80 * @return 処理結果DTO 81 * @throws Exception 82 */ 83 private ProcessResult doDispDetails(HttpServletRequest request, 84 Connection con) throws Exception { 85 ProcessResult result = new ProcessResult(); 86 String id = request.getParameter("id"); 87 List<CustomerDto> retList = this.getCustomerList(id, con); 88 if (retList.size() == 0) { 89 super.setErrMsg("データがすでに削除された可能性があります。再度検索してください。"); 90 // 一覧検索画面に戻す。 91 result.setUrl(customerListUrl); 92 result.setNormalEndFlg(false); 93 94 return result; 95 } 96 CustomerDto dto = retList.get(0); 97 super.setSessionAttribute("id", dto.getId()); 98 super.setSessionAttribute("name", dto.getName()); 99 100 101 // 処理モードをセットする。 102 super.setSessionAttribute("processType", "update"); 103 result.setUrl(requestPageUrl); 104 result.setNormalEndFlg(true); 105 return result; 106 } 107 108 /** 109 * ユーザーマスタの新規登録を行います。 110 * 111 * @param request 112 * リクエスト情報 113 * @param con 114 * コネクション 115 * @return 処理結果DTO 116 * @throws Exception 117 */ 118 private ProcessResult doInsert(HttpServletRequest request, Connection con) 119 throws Exception { 120 ProcessResult result = new ProcessResult(); 121 122 String id = request.getParameter("id"); 123 String name = request.getParameter("name"); 124 125 126 boolean errExistsFlg = false; 127 // 必須チェック 128 if (StringUtils.isBlank(id)) { 129 super.setErrMsg("IDは必ず入力してください。"); 130 errExistsFlg = true; 131 } 132 if (StringUtils.isBlank(name)) { 133 super.setErrMsg("名前は必ず入力してください。"); 134 errExistsFlg = true; 135 } 136 if (StringUtils.isBlank(kana)) { 137 super.setErrMsg("フリガナは必ず入力してください。"); 138 errExistsFlg = true; 139 } 140 if (StringUtils.isBlank(height)) { 141 super.setErrMsg("身長は必ず入力してください。"); 142 errExistsFlg = true; 143 } 144 if (StringUtils.isBlank(weight)) { 145 super.setErrMsg("体重は必ず入力してください。"); 146 errExistsFlg = true; 147 } 148 if (StringUtils.isBlank(birthday)) { 149 super.setErrMsg("生年月日は必ず入力してください。"); 150 errExistsFlg = true; 151 } 152 153 154 155 if (errExistsFlg) { 156 // 入力チェックでエラーの場合は処理終了 157 result.setNormalEndFlg(false); 158 return result; 159 } 160 /*** 161 * //ID存在チェック List<CustomorDto> retList = this.getCustomerList(id, con); 162 * if (retList.size() == 0) { 163 * super.setErrMsg("データがすでに削除された可能性があります。再度検索してください。"); 164 * result.setNormalEndFlg(false); return result; } 165 */ 166 167 CustomerDto paramDto = new CustomerDto(); 168 paramDto.setId(id); 169 paramDto.setName(name); 170 paramDto.setKana(kana); 171 paramDto.setGender(gender); 172 173 174 CustomerUpdateDao updateDao = new CustomerUpdateDao(); 175 updateDao.setParam(paramDto); 176 updateDao.execute(con); 177 178 super.setSessionAttribute("id", id); 179 super.setSessionAttribute("name", name); 180 super.setSessionAttribute("kana", kana); 181 182 183 result.setMsg("削除が完了しました。"); 184 result.setUrl(requestPageUrl); 185 result.setNormalEndFlg(true); 186 187 188 return result; 189 190 } 191 192 /** 193 * ユーザーマスタの削除を行います。 194 * 195 * @param request 196 * リクエスト情報 197 * @param con 198 * コネクション 199 * @return 処理結果DTO 200 * @throws Exception 201 */ 202 private ProcessResult doDelete(HttpServletRequest request, Connection con) 203 throws Exception { 204 ProcessResult result = new ProcessResult(); 205 result.setUrl(requestPageUrl); 206 // 処理モードをセットする。 207 super.setSessionAttribute("processType", "update"); 208 209 String id = request.getParameter("id"); 210 String name = request.getParameter("name"); 211 String kana = request.getParameter("kana"); 212 213 /*** 214 * ID存在チェック List<CustomorDto> retList = this.getUserList(id, con); if 215 * (retList.size() == 0) { 216 * super.setErrMsg("データがすでに削除された可能性があります。再度検索してください。"); 217 * result.setNormalEndFlg(false); return result; } 218 */ 219 220 CustomerDto paramDto = new CustomerDto(); 221 paramDto.setId(id); 222paramDto.setAddress(address); 223 paramDto.setPhone(phone); 224 paramDto.setDeleteFlag(deleteFlag); 225 226 CustomerDeleteDao deleteDao = new CustomerDeleteDao(); 227 deleteDao.setParam(paramDto); 228 deleteDao.execute(con); 229 230 super.setSessionAttribute("id", id); 231 super.setSessionAttribute("phone", phone); 232 result.setMsg("削除が完了しました。"); 233 result.setUrl(requestPageUrl); 234 result.setNormalEndFlg(true); 235 236 return result; 237 } 238 239 /** 240 * ユーザーマスタの削除を行います。 241 * 242 * @param request 243 * リクエスト情報 244 * @param con 245 * コネクション 246 * @return 処理結果DTO 247 * @throws Exception 248 */ 249 private ProcessResult createInsertModoResult() { 250 // 新規登録表示 251 ProcessResult result = new ProcessResult(); 252 result.setUrl(requestPageUrl); 253 result.setNormalEndFlg(true); 254 255 super.setSessionAttribute("id", ""); 256 super.setSessionAttribute("name", ""); 257 super.setSessionAttribute("kana", ""); 258 super.setSessionAttribute("phone", ""); 259 // 処理モードをセットする。 260 super.setSessionAttribute("processType", "insert"); 261 return result; 262 } 263 264 /** 265 * ユーザーマスタを検索しリストをかえします。 266 * 267 * @param id 268 * ユーザーID 269 * @param con 270 * コネクション 271 * @return ユーザーマスタDTOリスト 272 * @throws Exception 273 */ 274 275 private List<CustomerDto> getCustomerList(String id, Connection con) 276 throws Exception { 277 CustomerDto paramDto = new CustomerDto(); 278 paramDto.setId(id); 279 280 CustomerSelectDao dao = new CustomerSelectDao(); 281 dao.setParam(paramDto); 282 dao.execute(con); 283 return dao.getResultList();

###補足情報(言語/FW/ツール等のバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

文字列の比較には通常、equalを使用します。
if (request.getParameter("deleteFlag").equal("0"))

投稿2015/06/10 10:09

chiku_

総合スコア1464

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yk-211

2015/06/10 10:21

回答ありがとうございます。 おっしゃるとおりです、忘れておりました。 そちらでやってみたところ、UPDATEが動きませんでした。
guest

0

lang

1if (request.getParameter("update") != null) { 2 // 更新処理 3 return this.doUpdate(request, con); 4} else { 5 // 削除処理 6 return this.doDelete(request, con); 7}

DELETEのはずなのにUPDATEになるということは、上記部分のifの判定が怪しいですね。
デバッグやprintlnでrequest.getParameter("update")を確認し、UPDATE、DELETEそれぞれどのような値が格納されているか見てみましょう。

Javaの文字列の比較は慣れないとわかりづらいかもしれません。
参考:Javaでの比較

投稿2015/06/10 08:48

編集2015/06/10 10:20
sho_cs

総合スコア3541

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yk-211

2015/06/10 08:58

ありがとうございます。 そこの部分でdeleteFlagに1が入ったときはdeleteになるようにするとうまくいきそうで、 if (request.getParameter("deleteFlag") == 0)としたいのですが、String型とint型のためうまくいかないようです。 どのようにしたらうまくいきますでしょうか。
guest

0

45行目てどこですか^^;

System.out.println( request ); // requestの中身を見た方がいいですね。

if (request.getParameter("update") != null) {
// 更新処理
return this.doUpdate(request, con);
} else if(request.getParameter("delete") != null) { ← 入れた方がいいですね。
// 削除処理
return this.doDelete(request, con);
}

投稿2015/06/10 08:44

MasaakiIrie

総合スコア1021

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yk-211

2015/06/10 09:00

回答ありがとうございます。 分かりづらく申し訳ありませんでした。 MasaakiIrie様の指摘していただいているそちらの部分が問題だと思いますが、 まずはrequestの中を見てみます。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問