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

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

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

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

6310閲覧

詳細ページに行くとき、テーブルがないとなります(Table not found; SQL statement:)

goriwo

総合スコア17

Java

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2021/04/26 20:30

前提・実現したいこと

javaでユーザー詳細機能を作成して詳細ページにアクセスしたいのですがテーブルがないとなります

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

There was an unexpected error (type=Internal Server Error, status=500). PreparedStatementCallback; bad SQL grammar [SELECT * FROM m_userWHERE user_id=?]; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: テーブル "M_USERWHERE" が見つかりません Table "M_USERWHERE" not found; SQL statement: SELECT * FROM m_userWHERE user_id=? [42102-200] org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT * FROM m_userWHERE user_id=?]; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: テーブル "M_USERWHERE" が見つかりません Table "M_USERWHERE" not found; SQL statement: SELECT * FROM m_userWHERE user_id=? [42102-200]

該当のソースコード

#UserDaoJdbcImpl.java package com.example.demo.jdbc; import java.sql.Date; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import com.example.demo.Repository.UserDao; import com.exmple.demo.models.User; @Repository public class UserDaoJdbcImpl implements UserDao{ @Autowired JdbcTemplate jdbc; //Userテーブルの件数を取得 @Override public int count()throws DataAccessException{ //全件取得してカウント int count = jdbc.queryForObject("SELECT COUNT(*)FROM m_user",Integer.class); return count; } //Userテーブルにデータを1件挿入 @Override public int insertOne(User user)throws DataAccessException{ int rowNumber = jdbc.update("INSERT INTO m_user(user_id," + "password," + "user_name," + "birthday," + "age," + "marriage," + "role)" + "VALUES(?,?,?,?,?,?,?)" ,user.getUserId() ,user.getPassword() ,user.getUserName() ,user.getBirthday() ,user.getAge() ,user.isMarriage() ,user.getRole()); return rowNumber; } @Override public User selectOne(String userId)throws DataAccessException{ //Userテーブルのデータを1件取得 //1レコードの内容をMapとして取得する(queryForMap) //? 動的に変化する値 Map<String,Object>map = jdbc.queryForMap("SELECT*FROM m_user"+"WHERE user_id=?",userId); //結果返却用の変数 User user = new User(); //Userインスタンスにデータセット user.setUserId((String)map.get("user_id")); user.setPassword((String)map.get("password")); user.setUserName((String)map.get("user_name")); user.setBirthday((Date)map.get("birthday")); user.setAge((Integer)map.get("age")); user.setMarriage((Boolean)map.get("marriage")); user.setRole((String)map.get("role")); return user; } //Userテーブルの全データを取得 @Override public List<User>selectMany()throws DataAccessException{ //複数行のレコードを取得する(queryForList) List<Map<String,Object>>getList = jdbc.queryForList("SELECT*FROM m_user"); //結果返却用の変数 List<User>userList = new ArrayList<>(); //取得したデータを結果返却用のListに格納 for(Map<String, Object>map:getList) { User user = new User(); //Userインスタンスにデータセット user.setUserId((String)map.get("user_id")); user.setPassword((String)map.get("password")); user.setUserName((String)map.get("user_name")); user.setBirthday((Date)map.get("birthday")); user.setAge((Integer)map.get("age")); user.setMarriage((Boolean)map.get("marriage")); user.setRole((String)map.get("role")); //結果返却用のListに追加 userList.add(user); } return userList; } //Userテーブルを1件更新 @Override public int updateOne(User user)throws DataAccessException{ return 0; } //Userテーブルを1件削除 @Override public int deleteOne(String userId)throws DataAccessException{ return 0; } //SQL取得結果をサーバーにCSV(カンマで区切られたデータ形式)で保存 @Override public void userCsvOut()throws DataAccessException{ } }
#schema.sql /*従業員テーブル */ CREATE TABLE IF NOT EXISTS employee( employee_id INT PRIMARY KEY, employee_name VARCHAR(50), age INT ); /*ユーザーマスタ*/ CREATE TABLE IF NOT EXISTS m_user( user_id VARCHAR(50) PRIMARY KEY, password VARCHAR(100), user_name VARCHAR(50), birthday DATE, age INT, marriage BOOLEAN, role VARCHAR(50) );
#application.properties server.max-http-header-size=1MB spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.datasource.sql-script-encoding=UTF-8 spring.h2.console.enabled=true spring.datasource.initialization-mode=always spring.datasource.schema=classpath:schema.sql spring.datasource.data=classpath:data.sql
#userDetail.html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> <head> <meta charset="UTF-8"></meta> </head> <body> <div th:fragment="userDetail_contents"> <div class="row"> <div class="col-sm-5"> <div class="page-header"> <h1>ユーザー詳細</h1> </div> <form method="post"th:action="@{/userDetail}"th:object="${signupForm}"> <table class="table table-bordered table-hover"> <tr> <th class="active col-sm-2">ユーザID</th> <td class="colsm-3"> <div class="form-group"> <input type="text"class="form-control" th:field="∗{userId}" readonly="readonly"/> </div> </td> </tr> <tr> <th class="active">パスワード</th> <td> <div class="formgroup"th:classappend="${#fields.hasErrors('password')}?'has-error'"> <input type="text"class="form-control"th:field="∗{password}"/> <span class="text-danger" th:if="${#fields.hasErrors('password')}" th:errors="∗{password}">                     passworderror </span> </div> </td> </tr> <tr> <th class="active">ユーザ名</th> <td> <div class="formgroup"th:classappend="${#fields.hasErrors('userName')}?'has-error'"> <input type="text"class="form-control"th:field="∗{userName}"/> <span class="text-danger"th:if="${#fields.hasErrors('userName')}"th:errors="∗{userName}">  userNameerror </span> </div> </td> </tr> <tr> <th class="active">誕生日</th> <td> <div class="form-group"th:classappend="${#fields.hasErrors('birthday')}?'has-error'"> <input type="text"class="form-control"placeholder="yyyy/MM/dd"th:field="∗{birthday}"/> <span class="text-danger"th:if="${#fields.hasErrors('birthday')}"th:errors="∗{birthday}">  birthdayerror </span> </div> </td> </tr> <tr> <th class="active">年齢</th> <td> <div class="form-group"th:classappend="${#fields.hasErrors('age')}?'has-error'"> <input type="text"class="form-control"th:field="∗{age}"/> <span class="text-danger"th:if="${#fields.hasErrors('age')}"th:errors="∗{age}">  ageerror </span> </div> </td> </tr> <tr> <th class="active">結婚</th> <td> <div class="form-group"> <div th:each="item:${radioMarriage}"> <input type="radio"name="radioMarrige"th:value="${item.value}"th:text="${item.key}"th:field="∗{marriage}"> </div> <span class="textdanger"th:if="${#fields.hasErrors('marriage')}"th:errors="∗{marriage}">                     marriageerror </span> </div> </td> </tr> </table> <button class="btn btn-primary btn-lg pull-right"type="submit"name="update"> 更新 </button> <button class="btn btn-danger btn-lg"type="submit"name="delete">  削除 </button> </form> </div> </div> </div> </body> </html>

試したこと

テーブルがないってことなので
spring.datasource.initialization-mode=always
spring.datasource.schema=classpath:schema.sql
spring.datasource.data=classpath:data.sql
などかいたのですがかわりませんでした

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

テーブル名と where の間にスペースがありません

java

1Map<String,Object>map = jdbc.queryForMap("SELECT*FROM m_user"+"WHERE user_id=?",userId);

テーブル "M_USERWHERE" が見つかりません

投稿2021/04/26 20:41

takasima20

総合スコア7464

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

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

goriwo

2021/04/27 12:14

無事できました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問