Java
1System.out.print("更新するIDを入力:"); 2String empId = br.readLine(); 3 4System.out.print("A1:"); 5String empName = br.readLine(); 6System.out.print("A2:"); 7String gender = br.readLine(); 8System.out.print("A3):"); 9String birthday = br.readLine(); 10System.out.print("A4:"); 11String deptId = br.readLine(); 12 13con = db.getConnection(); 14 15String sqlup = "UPDATE **** SET A1 = ?,A2 = ?,A3 = ?,A4 = ? WHERE ID = ?"; 16ps = con.prepareStatement(sqlup); 17 18ps.setString(5, ID); 19ps.setString(1, A1); 20ps.setString(2, A2); 21ps.setString(3, A3); 22ps.setString(4, A4); 23 24ps.executeUpdate(); 25System.out.println("更新しました"); 26 } 27else{ 28System.out.println("該当する項目が存在しません");
はじめまして。
私、現在JavaおよびoracleDBを用いて簡単なコンソールアプリケーションを作成しているのですが、
JavaからのSQLで
String sql = "UPDATE **** SET A1=?, A2=?, A3=?...WHERE **** =?"
といったソースコードを記述したのですが、これに対して『コンソール上から入力した値のみを更新する』といった処理にするにはどうしたらよいでしょうか?
コンソールからの入力がなかった項目、入力を飛ばした項目に関しては元の値をそのままに、その他入力された項目がある場合は当該の項目を更新する、といった状態にしたいです。
御回答のほどよろしくお願いいたします。
「コンソール上から入力された値を受け取る」部分はできているのでしょうか?
プログラムコード(およびエラーメッセージ)は質問内容としては最も重要な部分であるため、見やすくしていただけると助かります。<code>ボタン押下→「コード」部分にコードを貼り付け→「ここに言語を入力」に対象言語名記入(エラーメッセージの場合は不要)の手順で「コードハイライト化」してください。(質問編集画面ではリアルタイムでプレビューが表示されるので見ながら調整してください)
提示されたコードだと更新対象のカラムの情報も受け取ってsetされていますし、そのまま出来そうに思うのですが、何がうまくいかないのでしょうか?
コンソールからの入力でnullがあった場合は元の値を参照させたいと思うのですがうまくいきません。
元の値とは?要件も質問にあるものと違いますので、質問を編集して要件を具体的に書いて下さい。
細かいですが System.out.print("A4:); ←" 閉じられてません・・
ご指摘ありがとうございます。 先ほど編集したときに間違って消してしまったようです。
後半のコードもだいぶおかしくなっているように思います。コード・要件 ともに整理して調整してください。でないと中々的確な回答が得られないと思います。
バインドに関しては入力した順に記述しております。まだ初心者でして、不明なところ、至らないところございますがご容赦くださいませ。
回答してみました。動作未検証ですので、実装イメージだけ持っていただければと思います。