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

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

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

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

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

SQL

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

1回答

1934閲覧

Javaのコンソールのnullについて

JmpMino

総合スコア4

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

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

SQL

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

2クリップ

投稿2020/08/06 11:53

前提・実現したいこと

Java初心者です。
Eclipseツールを使用し,oracleDBと接続してJavaで簡単な個人情報取り扱いWebシステムを製造しています。
実現したいこととして、DBに個人情報(IDと名前)を登録して、作成したWebシステムから個人情報IDを入力すると、名前が表示されて削除ボタンを押すと削除が出来るシステムを作ります。

発生している問題・エラーメッセージ

現状としては、IDに1を入力して、次画面にIDに紐づけた名前が表示されて名前をクリックして、次画面に名前が表示されて削除ボタンを押すと、次画面に削除が完了しましたというページが表示されています。
ここまで聞くと成功しているように見えますが、後述する問題で出来ずに、とりあえずJavaのSQLに、DELETE FROM PRIVATE WHERE REGIST_NUM='1'と指定しているので、成功できています。

本当はIDのところに最初の画面で入力された値を持っていかないといけないので、SQL文に変数を入れたのですが、コンソールにnullとなってしまいます。今回はここをどうにかして値を持っていきたいです。

該当のソースコード

Java

public class Delete_Delete { public Delete_Delete() { System.out.println("View=Delete_Result constract"); } // 検索-検索画面の検索ボタン押下処理 public void Delete_delete(smsSearchForm form, Model model) { SpringMvcConfig springMvcConfig = new SpringMvcConfig(); smsInfoDaoImpl SmsInfoDaoImpl = new smsInfoDaoImpl(springMvcConfig.getDataSource()); System.out.println("View=Delete_Delete.java"); String sql = Create_resultSQL(form); System.out.println("削除用"); System.out.println("実行します"); SmsInfoDaoImpl.delete(sql); System.out.println("実行されたよ"); model.addAttribute("DBList"); System.out.println("引継ぎ"); //SQL作成 String sql2 = Create_resultSQL(form); //SQL実行 List<Map<String,Object>> List = SmsInfoDaoImpl.search(sql2); //DB取得確認用 List.forEach(System.out::println); //DB取得結果を次画面へ引き継ぎ model.addAttribute("DBList", List); return; } // 検索SQL作成処理 public String Create_resultSQL(smsSearchForm form) { String sql ="DELETE FROM PRIVATE (" + "REGIST_NUM ," + ") WHERE (" + "'" + form.getRegist_num() ; System.out.println(sql); return sql; } }

jsp

<script type="text/javascript"> //ユーザクリック時の登録番号取得・設定とページ遷移処理 function userClicku(REGIST_NUM){ //登録番号をsmsSearchFormに設定 //本ページではRegist_numが使われないので要素から作成する var Regist_num = document.createElement("input"); Regist_num.name = "Regist_num"; Regist_num.type = "hidden"; Regist_num.value = REGIST_NUM; smsSearchForm.appendChild(Regist_num); //submitでPOST送信してページ遷移 smsSearchForm.submit(); } </script> <input type="button" value="削除" onclick="userClicku(${data.REGIST_NUM});"/>

試したこと

form.getRegist_num()に値を持っていこうとしたら、削除ボタンを押してコンソールにはnullと表示されました。

補足情報(FW/ツールのバージョンなど

eclipse
oracleDB
ojdbc8
spring

今回テラテイルを使うのが初めてでよく分からずにコードを抜粋したので、追加で見たいものがあれば申してください。

よろしくお願いいたします。

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

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

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

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

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

Yasumichi

2020/08/06 11:59

smsSearchForm はどうやって初期化していますか? 可能なら、当該 jsp を全開示してください。
m.ts10806

2020/08/06 12:01

><input type="button" value="削除" onclick="userClicku(${data.REGIST_NUM});"/> data.REGIST_NUM はどこからどのように渡っているのでしょう。 Thymeleafとしても、その書き方では「${data.REGIST_NUM」という文字列しか渡らず変数展開はされないはずですが。
JmpMino

2020/08/06 13:14

どのように書けば変数展開できるでしょうか?
m.ts10806

2020/08/06 13:22

調べて出ない内容ではないですよ。ドキュメントも確認してください。 そもそもThymeleafかどうかすらこれでは分かりません。なので「どう書けば」も判断できません。 コードは切り取りすぎると全体が見えません。 流れが見えるように、できればコピペで動くようなコードを提示してください。 それ以前に、Javaの各種命名規則にそってない命名されてるようですから、eclipseだと警告でるんじゃないでしょうか。 基礎なしに、ドキュメント確認もなしにフレームワークは手を出すべきではないです。
JmpMino

2020/08/06 13:27

警告は出ていません。 了解しました。
m.ts10806

2020/08/06 13:33

いずれにしても 「小文字はじまりのクラス名」 「クラス名やメソッド名にアンダーバー」はNGですね。コードレビューだと必ず指摘されます。 他にも↓ https://qiita.com/rkonno/items/1b30daf83854fecbb814 は、また覚えてもらうとして。 質問は編集できますので適宜追記願います。
guest

回答1

0

java

1//SQL作成 2String sql2 = Create_resultSQL(form); 3 4//SQL実行 5List<Map<String,Object>> List = SmsInfoDaoImpl.search(sql2);

とありますが、sql2の定義は

java

1// 検索SQL作成処理 2public String Create_resultSQL(smsSearchForm form) { 3 4 String sql ="DELETE FROM PRIVATE (" + 5 "REGIST_NUM ," + 6 ") WHERE (" + 7 8 "'" + form.getRegist_num() ; 9 10 System.out.println(sql); 11 12 return sql; 13}

と、検索するはずがDELETE文を発行しているので、これは検索結果を返しません。
ちなみに書かれているSQLは、実行時にSQLの文法エラーになりますが、こちらは正しい内容なのでしょうか。

投稿2020/08/06 23:46

A-pZ

総合スコア12011

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問