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

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

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

Q&A

0回答

470閲覧

すっきりわかるサーブレット&JSPに記載のWEBアプリケーションを作成しましたがDBの更新がされません。

amaprogrammer

総合スコア0

0グッド

0クリップ

投稿2020/09/15 05:42

前提・実現したいこと

「すっきりわかるサーブレット&JSP 入門」の参考書を用い参考書通りのコードで、つぶやき機能を持つWebアプリケーションを作りすべて問題なく動作はするのですが、H2DBコンソール画面でSELECT文を入力しても更新されていません。まだ学習を始めたばかりで基礎的な部分を間違えている可能性があるのですがご教示いただければ幸いです。

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

エラーは発生しておりません。

該当のソースコード

Java

1[DAOクラス] 2package dao; 3 4import java.sql.Connection; 5import java.sql.DriverManager; 6import java.sql.PreparedStatement; 7import java.sql.ResultSet; 8import java.sql.SQLException; 9import java.util.ArrayList; 10import java.util.List; 11 12import model.Mutter; 13 14public class MutterDAO { 15 16 private final String JDBC_URL = "jdbc:h2:tcp://localhost/~/docoTsubu"; 17 private final String DB_USER = "sa"; 18 private final String DB_PASS = ""; 19 20 public List<Mutter> findAll(){ 21 List<Mutter>mutterList = new ArrayList<>(); 22 23 try(Connection conn = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS)){ 24 String sql = "SELECT ID, NAME, TEXT FROM MUTTER ORDER BY ID DESC"; 25 PreparedStatement pStmt = conn.prepareStatement(sql); 26 27 ResultSet rs = pStmt.executeQuery(); 28 29 while(rs.next()) { 30 int id = rs.getInt("ID"); 31 String userName = rs.getString("NAME"); 32 String text = rs.getString("TEXT"); 33 Mutter mutter = new Mutter(id,userName,text); 34 mutterList.add(mutter); 35 } 36 }catch(SQLException e) { 37 e.printStackTrace(); 38 return null; 39 } 40 return mutterList; 41 42 43 } 44 45 public boolean create (Mutter mutter) { 46 try(Connection conn = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS)){ 47 String sql = "INSERT INTO MUTTER(NAME,TEXT) VALUES(?,?)"; 48 PreparedStatement pStmt = conn.prepareStatement(sql); 49 50 pStmt.setString(1,mutter.getUserName()); 51 pStmt.setString(2,mutter.getText()); 52 53 int result = pStmt.executeUpdate(); 54 if(result != 1) { 55 return false; 56 } 57 }catch (SQLException e) { 58 e.printStackTrace(); 59 return false; 60 } 61 return true; 62 } 63 64} 65 66 67[JSPファイル] 68<%@ page language="java" contentType="text/html; charset=UTF-8" 69 pageEncoding="UTF-8"%> 70<%@ page import= "model.User, model.Mutter, java.util.List " %> 71<% 72User loginUser = (User)session.getAttribute("loginUser"); 73List<Mutter>mutterList = (List<Mutter>)request.getAttribute("mutterList"); 74String errorMsg = (String)request.getAttribute("errorMsg"); 75%> 76<!DOCTYPE html> 77<html> 78<head> 79<meta charset="UTF-8"> 80<title>どこつぶ</title> 81</head> 82<body> 83<h1>どこつぶメイン</h1> 84<p> 85<%= loginUser.getName() %>さん、ログイン中<br> 86<a href="/docoTsubu/Logout">ログアウト</a> 87</p> 88<p><a href="/docoTsubu/Main">更新</a> 89<form action="/docoTsubu/Main" method="post"> 90<input type="text" name="text"> 91<input type="submit" value="つぶやく"> 92</form> 93<%if(errorMsg != null){ %> 94<p><%=errorMsg %></p> 95<%} %> 96<% for(Mutter mutter : mutterList){%> 97 <p><%=mutter.getUserName() %>:<%=mutter.getText() %></p> 98 99<%}%> 100</body> 101</html>

ブラウザ画面3026c8abfa01de9caa6f36f8.jpeg)
DB画面

試したこと

・DAOクラスの「private final String JDBC_URL = "jdbc:h2:tcp://localhost/~/docoTsubu"」の部分のURLを変更してもなぜかそのままブラウザ画面の結果は通常通り更新されました。

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

eclipseでJava11、Tomcat9を使用しております。
この画面上で複数のコードの挿入方法が分からず、DAOクラスとJSPファイルを連続して記述してしまいました。見にくいとは思いますがどうぞよろしくお願いいたします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問