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

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

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

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

Q&A

解決済

1回答

1250閲覧

Java DBの情報更新が出来ないです。

arin

総合スコア5

Java

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

0グッド

0クリップ

投稿2021/04/17 10:56

編集2021/04/19 11:05

executeUpdate();を利用した更新

Javaで会員情報更新機能を作ってるのですが、POST送信先がNULLで受け渡しが出来ていないのとexecuteUpdate();の使い方が誤った状態と思って作業したのですが、分からないので書き込みました。

会員情報変更POSTクラス

<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>マイページ</title> <link href="style.css" rel="stylesheet" type="text/css"> </head> <body> <div id="main"> <h1>詳細画面</h1> <form action="update" method="post"> <c:forEach var="customer" items="${customerList}"> <label for="email">Email</label> <input type="text" id="name=" value ="${customer.email}"> <label for="password">Passowrd</label> <input type="text" id="password" name="password" value ="${customer.password}"> <label for="name">氏名</label> <input type="text" id="name=" value="${customer.name}"> <label for="gender">性別</label> <c:if test="${customer.gender == 0}"> <input type="radio" name="gender" value="0" checked=checked>男 <input type="radio" name="gender" value="1">女 </c:if> <c:if test="${customer.gender == 1}"> <input type="radio" name="gender" value="0">男 <input type="radio" name="gender" value="1" checked=checked>女 </c:if> <label for="blood">血液型</label> <select name="blood"> <option value="${customer.blood}">${customer.blood}型</option> <option value="A">A型</option> <option value="B">B型</option> <option value="O">O型</option> <option value="AB">AB型</option> </select> <label for="memo">メモ</label> <textarea name="memo" rows="4" cols="41" maxlength="100">${customer.memo}</textarea> <input type="hidden" name="id" value="${customer.id}"> <input type="submit" value="更新"> </c:forEach> </form> <form action="delete" method="post"> <c:forEach var="customer" items="${customerList}"> <input type="hidden" name="id" value="${customer.id}"> <input type="hidden" name="email" value="${customer.email}"> <input type="hidden" name="password" value="${customer.password}"> <input type="hidden" name="name" value="${customer.name}"> <input type="hidden" name="gender" value="${customer.gender}"> <input type="hidden" name="blood" value="${customer.blood}"> <input type="hidden" name="memo" value="${customer.memo}"> <input type="submit" value="削除"> </c:forEach> </form> </div> </body> </html>

POSTされた値をDBに接続するクラス

package service; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class UpdateService { public void updateCustomer (String email, String password, String name, String gender, String blood, String old, String id) { String dbName = "system_user"; String dbPropaties = "?cvharacterEncoding=UTF-8&serverTimezone=JST"; String dbUrl ="jdbc:mySQL://localhost:3306/" + dbName +dbPropaties; String dbUser = "root"; String dbPassword = "admin"; String sql ="update customer set email=?, password=?, name=?, gender=?, blood=?, old=? where id=?;"; try { Class.forName("com.mysql.jdbc.Driver"); Connection coon = DriverManager.getConnection(dbUrl, dbUser, dbPassword); PreparedStatement ps = coon.prepareStatement(sql); //プリペアステートメントでマイページで選択した値を代入 ps.setString(1, email); ps.setString(2, password); ps.setString(3, name); ps.setString(4, gender); ps.setString(5, blood); ps.setString(6, old); ps.setString(7, id); ps.executeUpdate(); ps.close(); coon.commit(); } catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); } } }

DBクラスを呼び出すクラス

package controller; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import service.UpdateService; @WebServlet("/update") public class UpdateController extends HttpServlet{ protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{//22行目MySQLにログインする String id = request.getParameter("id"); String email = request.getParameter("email"); String password = request.getParameter("password"); String name = request.getParameter("name"); String gender = request.getParameter("gender"); String blood = request.getParameter("blood"); String old = request.getParameter("old"); UpdateService updateservice = new UpdateService(); updateservice.updateCustomer(email,password,name,gender,blood,old,id); ServletContext sc = getServletContext(); sc.getRequestDispatcher("/" + "update.jsp").forward(request, response); } }

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

Eqlipse
tomcat

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

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

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

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

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

dodox86

2021/04/18 01:39

まぁ、あと、そもそもどこまでちゃんと動いているか(進んでいるか)を見極めましょう。質問文だけを見ると「executeUpdateの使い方」とありますが、使い方だけの話であれば、何かしら参考にできるサイトを読めば済む話になります。 質問者さんのコードに依存した話ならば、「上記のPOST送信先のupdate文クラス」で、以下の部分のコードなど、ちょっとあり得ない使い方です。UPDATE文でexecuteQueryの実行、ResultSetの取得は無いですね。 > ps.executeUpdate(); > ps.close(); > ResultSet rs = ps.executeQuery(); > while (rs.next()) {
arin

2021/04/19 12:17

修正をしましたので確認お願いします。
guest

回答1

0

自己解決

POSTクラスにname=""が抜けていました。

投稿2021/04/19 15:31

arin

総合スコア5

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

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

m.ts10806

2021/04/19 21:52

POSTクラスってどこでしょう? このあたりは「抜けている」というより「name属性が有効になる記述になっていない」「IDが重複していてHTML構文としてNG」ですが <input type="text" id="name=" value ="${customer.email}"> <input type="text" id="name=" value="${customer.name}">
arin

2021/04/20 13:41

会員情報変更POSTクラスです。 正解が<input type="text" id="email=" name="email" value ="${customer.email}">
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問