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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Q&A

0回答

1927閲覧

SELECT文が実行されない?

MOHUMOHU5

総合スコア10

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

0グッド

0クリップ

投稿2019/02/05 09:53

前提・実現したいこと

Javaのあるメソッドをjspファイルで実行し、MYSQLのデータを条件付きで読み取りたいです。

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

エラーメッセージはでできませんが、事前に作成してあるデータベースの存在しているカラム、データ名を指定してもすべて表示されません

該当のソースコード

Java

1package ranking; 2 3import java.sql.*; //SQLに関連したクラスライブラリをインポート 4 5public class data { 6 7 /* 1. フィールドの定義 */ 8 public String[] comic_name = new String[100]; //学生番号 9 public String[] author = new String[100]; //名前 10 public String[] volume = new String[100]; //入学年 11 public String[] genre = new String[100]; 12 public String[] publisher = new String[100]; 13 public String[] detail = new String[500]; 14 public int num; //データ取得件数 15 public int[] id = new int[100]; //ファイルNo 16 17/* 2. メソッド */ 18 /* 2.1 データベースからのデータ取得メソッド */ 19 public void dataload1(String a, String b) throws Exception { //エラー処理が必要にする 20/* 2.1.1 データベースに接続 */ 21 num = 0; //取得件数の初期化 22 Class.forName("com.mysql.jdbc.Driver").newInstance(); //com.mysql.jdbc.Driverはドライバのクラス名 23 String url = "jdbc:mysql://localhost/softd4?characterEncoding=UTF-8"; //データベース名:文字エンコードはUTF-8 24 Connection conn = DriverManager.getConnection(url, "softd", "softd"); //上記URL設定でユーザ名とパスワードを使って接続 25 26 /* 2.1.2 SELECT文の実行 */ String sql = "SELECT * FROM comic where ? = ?"; //SQL文の設定 ?などパラメータが必要がない場合は通常のStatementを利用 27 PreparedStatement stmt = conn.prepareStatement(sql); //JDBCのステートメント(SQL文)の作成 28 stmt.setString(1, a);//1つ目の?に引数をセットする 29 stmt.setString(2, b); 30 31 stmt.setMaxRows(100); //最大の数を制限 32 ResultSet rs = stmt.executeQuery(); //ステートメントを実行しリザルトセットに代入 33 34 35 36 /* 2.1.3 結果の取り出しと表示 */ 37 while (rs.next()) { //リザルトセットを1行進める.ない場合は終了 38 this.id[num] = rs.getInt("comicid"); 39 this.comic_name[num] = rs.getString("comic"); 40 this.genre[num] = rs.getString("genre"); 41 this.publisher[num] = rs.getString("publisher"); 42 this.volume[num] = rs.getString("volume"); 43 this.author[num] = rs.getString("author"); 44 this.detail[num] = rs.getString("detail"); 45 num++; 46 } 47 48 49 /* 2.1.4 データベースからの切断 */ 50 rs.close(); //開いた順に閉じる 51 stmt.close(); 52 conn.close(); 53 } 54 /* 3. アクセッサ */ 55 /* 3.1 Getアクセッサ */ 56 public int getId(int i) { 57 if (i >= 0 && num > i) { 58 return id[i]; 59 } else { 60 return 0; 61 } 62 } 63 64 public String getComic_name(int i) { 65 if (i >= 0 && num > i) { 66 return comic_name[i]; 67 } else { 68 return ""; 69 } 70 } 71 72 public String getGenre(int i) { 73 if (i >= 0 && num > i) { 74 return genre[i]; 75 } else { 76 return ""; 77 } 78 } 79 80 public String getPublisher(int i) { 81 if (i >= 0 && num > i) { 82 return publisher[i]; 83 } else { 84 return ""; 85 } 86 } 87 88 public String getVolume(int i) { 89 if (i >= 0 && num > i) { 90 return volume[i]; 91 } else { 92 return ""; 93 } 94 } 95 96 public String getAuthor(int i) { 97 if (i >= 0 && num > i) { 98 return author[i]; 99 } else { 100 return ""; 101 } 102 } 103 104 public String getDetail(int i) { 105 if (i >= 0 && num > i) { 106 return detail[i]; 107 } else { 108 return ""; 109 } 110 } 111 public int getNum() { 112 return num; // データ件数 113 } 114 115} 116 117```jsp 1183-1jsp 119<%@page contentType="text/html" pageEncoding="UTF-8"%> 120<jsp:useBean id="file2" scope="session" class="ranking.data" /> 121<% /* リクエストの取得 */ 122request.setCharacterEncoding("UTF-8"); 123String genre=null; 124if (request.getParameter("ジャンル") != null) { 125 genre = request.getParameter("ジャンル").toString(); 126} 127 128 129String a="genre"; 130%> 131 132 133<%try { 134file2.dataload1(a,"genre"); 135%> 136<jsp:forward page="4.jsp" /> 137<% 138} catch (Exception e) { 139%> 140 141 142 143<!DOCTYPE html> 144<html> 145 <head> 146 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 147 148 </head> 149 <body> 150 アクセスできません 151 </body> 152</html> 153 154 155 156<% 157} 158%> 159 160 161### 試したこと 162jspの最初に記述しているほかのjspからの値渡しは成功しています。 163mysqlをコマンドプロンプトで起動しjavaに書いたsql文をそのまま書きましたが成功しているので、おそらくこのJavaファイルかjspファイルが影響していると考えます。 164 165### 補足情報(FW/ツールのバージョンなど) 166 167ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2019/02/05 10:53

jspも同じくコードブロックにてご提示ください
m.ts10806

2019/02/05 10:57

ちなみにプリペアドステートメントは基本的にカラムには使えませんよ。そもそもが外部から、例えば入力値をSQLに使うときのSQLインジェクション対策のエスケープのためですし
MOHUMOHU5

2019/02/05 11:07

すみません、初めての質問でうまくいきませんでした。カラムにはプリペアドステートメントが使えないというのは初めて知りました。勉強不足でした... ありがとうございます!
m.ts10806

2019/02/05 11:07

質問は編集できるので適宜ご対応ください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問