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

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

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

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

Q&A

解決済

1回答

2177閲覧

sqlで自分のツイートだけを表示したい

Yoshi--

総合スコア62

Java

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

0グッド

0クリップ

投稿2017/05/18 04:56

MutterDAO.java

java

1package dao; 2 3import java.sql.Connection; 4import java.sql.PreparedStatement; 5import java.sql.ResultSet; 6import java.util.ArrayList; 7import java.util.List; 8 9import model.Mutter; 10import util.JDBCUtils; 11 12public class MutterDAO { 13 14 //全レコードを取得 15 public List<Mutter> findAll(String userName) { 16 List<Mutter> mutterList = new ArrayList<Mutter>(); 17 18 try(Connection conn = JDBCUtils.getConnection()){ 19 20 // TWEETテーブルにUSERテーブルを結合してTWEET_IDの大きい順に並び替え ; SELECT 列名 FROM テーブル名 ORDER BY 列名 並び順 (検索結果をTWEET_IDの大きい順DESCに並び替える) 21 String sql = "SELECT * FROM (SELECT " 22 + "TWEET_ID AS TWEET_ID," 23 + "USER_NAME AS USER_NAME," 24 + "TWEET.TEXT AS TEXT " // AS は別名的な 25 + "FROM TWEET INNER JOIN USER ON TWEET.USER_ID = USER.USER_ID " //結合;選択列リスト FROM テーブルA JOIN テーブルB ON 両テーブルの結合条件 26 + "ORDER BY TWEET_ID DESC) " 27 + "WHERE USER_NAME=?"; 28 29 try(PreparedStatement pStmt = conn.prepareStatement(sql)){ 30 pStmt.setString(1, userName); //postで送られたuserNameがデータベース上にあるか検索 31 32 // SELECTを実行 33 try(ResultSet rs = pStmt.executeQuery()){ 34 // SELECT文の結果をArrayListに格納 35 while (rs.next()) { 36 int tweetId = rs.getInt("TWEET_ID"); 37 String Name = rs.getString("USER_NAME"); 38 String te = rs.getString("TEXT"); 39 Mutter mutter = new Mutter(tweetId, Name, te); 40 mutterList.add(mutter); 41 } 42 } 43 } 44 } catch (Exception e) { 45 throw new RuntimeException(e); 46 } 47 return mutterList; 48 } 49 50 51 52 53//つぶやきを追加 54 public boolean create(Mutter mutter) { 55 try(Connection conn = JDBCUtils.getConnection()){ 56 57 // INSERT文の準備(idは自動連番なので指定しなくてよい) 58 String sql = "INSERT INTO TWEET (USER_ID,TEXT) VALUES(?, ?)"; 59 try(PreparedStatement pStmt = conn.prepareStatement(sql)){ 60 // INSERT文中の「?」に使用する値を設定しSQLを完成 61 pStmt.setString(1, mutter.getUserId()); 62 pStmt.setString(2, mutter.getText()); 63 // INSERT文を実行 64 int result = pStmt.executeUpdate(); 65 if (result != 1) { 66 return false; 67 } 68 } 69 } catch (Exception e) { 70 throw new RuntimeException(e); 71 } 72 return true; 73 } 74 75 76}

GetMutterListLogic.java

java

1//MutterDAOを使用してMUTTERテーブルの全レコードを取得し、それを返す 2 3package model; 4 5import java.util.List; 6 7import dao.MutterDAO; 8 9 10public class GetMutterListLogic { 11 12 public List<Mutter> execute(String userName){ 13 MutterDAO dao = new MutterDAO(); 14 List<Mutter> mutterList = dao.findAll(userName); 15 return mutterList; 16 } 17} 18

Main.java

java

1//つぶやきに関するリクエストを処理するコントローラ 2 3package servlet; 4 5import java.io.IOException; 6import java.util.List; 7 8import javax.servlet.RequestDispatcher; 9import javax.servlet.ServletException; 10import javax.servlet.annotation.WebServlet; 11import javax.servlet.http.HttpServlet; 12import javax.servlet.http.HttpServletRequest; 13import javax.servlet.http.HttpServletResponse; 14import javax.servlet.http.HttpSession; 15 16import model.GetMutterListLogic; 17import model.Mutter; 18import model.PostMutterLogic; 19import model.User; 20 21@WebServlet("/Main") 22public class Main extends HttpServlet { 23 private static final long serialVersionUID = 1L; 24 25 protected void doGet(HttpServletRequest request, HttpServletResponse response) 26 throws ServletException, IOException { 27 28 // ログインしているか確認するため、セッションスコープからユーザー情報を取得 29 HttpSession session = request.getSession(); 30 User loginUser = (User) session.getAttribute("loginUser"); 31 32 if (loginUser == null) { // ログインしていない場合 33 // リダイレクト 34 response.sendRedirect(request.getServletContext().getContextPath()); // トップ画面へ 35 } else { // ログイン済みの場合 36 37 // つぶやきリストを取得して、リクエストスコープに保存 38 GetMutterListLogic getMutterListLogic = new GetMutterListLogic(); 39 40 List<Mutter> mutterList = getMutterListLogic.execute("userName"); 41 request.setAttribute("mutterList", mutterList); 42 43 // フォワード 44 RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/jsp/myPage.jsp"); 45 dispatcher.forward(request, response); 46 } 47 48 } 49 50 protected void doPost(HttpServletRequest request, HttpServletResponse response) 51 throws ServletException, IOException { 52 53 // ログインしているか確認するため、セッションスコープからユーザー情報を取得 54 HttpSession session = request.getSession(); 55 User loginUser = (User) session.getAttribute("loginUser"); 56 57 if (loginUser == null) { // ログインしていない場合 58 // リダイレクト 59 response.sendRedirect(request.getServletContext().getContextPath()); // トップ画面へ 60 } else { 61 62 // リクエストパラメータの取得 63 request.setCharacterEncoding("UTF-8"); 64 String text = request.getParameter("text"); 65 66 // 入力値チェック 67 if (text != null && text.length() != 0) { 68 69 // つぶやきをつぶやきリストに追加 70 Mutter mutter = new Mutter(loginUser.getUserId(), text); 71 PostMutterLogic postMutterLogic = new PostMutterLogic(); 72 postMutterLogic.execute(mutter); 73 74 } else { 75 // エラーメッセージをリクエストスコープに保存 76 request.setAttribute("errorMsg", "つぶやきが入力されていません。"); 77 } 78 79 // つぶやきリストを取得して、リクエストスコープに保存 80 GetMutterListLogic getMutterListLogic = new GetMutterListLogic(); 81 List<Mutter> mutterList = getMutterListLogic.execute("userName"); 82 request.setAttribute("mutterList", mutterList); 83 84 // メイン画像にフォワード 85 RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/jsp/myPage.jsp"); 86 dispatcher.forward(request, response); 87 } 88 } 89}

やりたいことは自分のつぶやきだけを表示したいです
データベース上はエラーはないのですが
実行したときにつぶやきが表示されません
どこがおかしいのでしょうか??

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

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

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

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

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

guest

回答1

0

ベストアンサー

java

1 // つぶやきリストを取得して、リクエストスコープに保存 2 GetMutterListLogic getMutterListLogic = new GetMutterListLogic(); 3 List<Mutter> mutterList = getMutterListLogic.execute("userName"); // ここ

"userName" ではなく loginUser.getUserId()では?

投稿2017/05/21 03:40

TakeoAsai

総合スコア880

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

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

Yoshi--

2017/05/24 01:41

ありがとうございました!!!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問