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

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

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

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

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Q&A

解決済

1回答

670閲覧

データベース内のデータをサーブレットして、表として表示させたい。

YUKI111

総合スコア1

MySQL

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

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

0グッド

0クリップ

投稿2022/08/09 00:52

前提

データベース内にあるデータをサーブレットする勉強をしてます。
mysqlを利用しています。

実現したいこと

データベース内のデータをサーブレットし、表として表示させたい。

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

イメージ説明

該当のソースコード

Java

1package servlet; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5import java.sql.Connection; 6import java.sql.DriverManager; 7import java.sql.ResultSet; 8import java.sql.SQLException; 9import java.sql.Statement; 10 11import javax.servlet.ServletException; 12import javax.servlet.annotation.WebServlet; 13import javax.servlet.http.HttpServlet; 14import javax.servlet.http.HttpServletRequest; 15import javax.servlet.http.HttpServletResponse; 16 17/** 18 * Servlet implementation class MovieFromDB 19 */ 20@WebServlet("/MovieFromDB") 21public class MovieFromDB extends HttpServlet { 22 23protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 24 25Connection con = null; 26response.setContentType("text/html; charset=Windows-31J"); 27PrintWriter out = response.getWriter(); 28out.println("<html><head></head><body>"); 29out.println("<table border=’true’>"); 30out.println("<tr><th>名前</th><th>監督</th><th>年</th><th>主演</th></tr>"); 31 32try { 33Class.forName("com.mysql.jdbc.Driver"); 34 35String url = "jdbc:mysql://localhost:3306/practice"; 36String user = "root"; 37String password = "12345"; 38 39con = DriverManager.getConnection(url, user, password); 40Statement stmt = con.createStatement(); 41ResultSet rs = stmt.executeQuery("SELECT * FROM movie;"); 42while (rs.next()) { 43out.print("<tr>"); 44out.print("<td>"+rs.getString("name")+"</td>"); 45out.print("<td>"+rs.getString("dir") + "</td>"); 46out.print("<td>"+rs.getInt("year") + "</td>"); 47out.print("<td>"+rs.getString("main") + "</td>"); 48out.print("</tr>"); 49} 50} 51catch (ClassNotFoundException e) { 52out.println("クラスが見つかりません。"); 53} 54catch (SQLException e) { 55out.println("データベース操作中にエラーがありました。"); 56e.printStackTrace(); 57} 58finally { 59try { 60if (con != null) 61con.close(); 62} 63catch (SQLException e) {} 64} 65 66out.println("</table>"); 67out.println("</body></html>"); 68out.close(); 69} 70}

試したこと

Class.forNameを削除してみたり、JSPを利用しようとしたりした。

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

mysql-connector-java8.0.29.jarはビルドパスしています。
エクリプスを使って開発をしています。

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

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

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

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

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

slemntqe

2022/08/09 02:52

「サーブレットして」「サーブレットする」という言い回しは存在しません。正しい言い回しに書き直して下さい。このような言い方をするということはあなたは「サーブレット」が何かを理解していないという事です。理解する必要があります。理解した上で書き直して下さい。
slemntqe

2022/08/09 02:55 編集

「エクリプス」はカタカナでは無く英語で表記して下さい。読み方が「エクリプス」というだけであって実際のアプリケーション名は英語です。
slemntqe

2022/08/09 02:56

細かいことを指摘していますが非常に重要なことです。面倒くさがらずに徹底して下さい。
guest

回答1

0

ベストアンサー

ResultSet rs = stmt.executeQuery("SELECT * FROM movie;");

アプリケーション側から渡すSQLに終端;を含めてはいけません。
ただ、その前で落ちてるようにも思います。
ClassNotFoundException の例外をSQLException のときと同じようにprintしてみてはどうでしょう。
またブレイクポイントを貼ったうえでデバッグモードで実行し、どこまで想定通りに通っているか、
途中の処理結果や変数の状態、内容などを確認すれば解決のヒントになると思います(むしろこれは質問前にやるべき)

あと、インデント全くないのでかっこの対応が見えづらいですし、
table出力しながらExceptionも出力するのはレイアウトに影響します。
Exceptionはtableよりも外に出力するように書かれたほうが良いでしょう。

投稿2022/08/09 01:09

編集2022/08/09 01:19
m.ts10806

総合スコア80850

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

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

YUKI111

2022/08/09 02:32

デバックモードという機能があることを初めて知りました。これを使って自分で考えてみたいと思います。
m.ts10806

2022/08/09 03:05

eclipseのメニュー的にはプロジェクト右クリック→デバッグ→実行 になると思います。 ブレイクポイントの貼り方やステップ実行の仕方も調べて試してください。 (そもそもブレイクポイントなしだと単に実行しただけとほとんど変わりません)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問