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

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

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

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

4回答

486閲覧

サーバではDBに接続不可?

HisashiSakamoto

総合スコア28

MySQL

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2018/04/23 11:00

編集2018/04/23 11:27

前提・実現したいこと

EclipseのTomcatサーバーでMySQLDBに接続できません。

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

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

該当のソースコード

ソースコードは正常であると思われます。
Javaファイルで、【MySQL接続用のコード】を
public static void main(String[] args)
にいれて、Javaで実行すれば、正常にDBの内容が表示されます。
st.executeQuery("select * from country");

しかしながら、「サーバで実行」すると、エラーメッセージになります。
サーバで実行の場合、
public void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
の中が実行されるものと理解しています。この中にも、上記と全く同じ【MySQL接続用のコード】を入れています。
おそらく、サーバ側(Tomcat)の問題であると思われますが、どうしていいのかわかりません。

Eclipse 4とEclipse 3どちらでやっても同じです。
なにか設定で見落としているところがあるのでしょうか?

package test3;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test33 extends HttpServlet {

public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/world","root","root"); Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("select * from country"); while(rs.next()) { String id = rs.getString(1); String location = rs.getString(2); String tid = rs.getString(3); String time = rs.getString(4); System.out.println ("ABBREVIATION:"+id+" FULLNAME:"+location+" REGION:"+tid+" SUBREGION:"+time); } rs.close(); st.close(); conn.close(); System.exit(0); } catch (ClassNotFoundException e) { System.out.println("ドライバを読み込めませんでした "+ e); } catch (SQLException e) { System.out.println("データベース接続エラー"+ e); } } public void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<html>"); writer.println("<head>"); writer.println("<title>Sample Application Servlet Page</title>"); writer.println("</head>"); writer.println("<body bgcolor=white>"); writer.println("<table border=\"0\">"); writer.println("<tr>"); writer.println("<td>"); writer.println("<img src=\"images/tomcat.gif\">"); writer.println("</td>"); writer.println("<td>"); writer.println("<h1>Sample Application Servlet</h1>"); writer.println("This is the output of a servlet that is part of"); writer.println("the Hello, World application.ssss"); writer.println("</td>"); writer.println("</tr>"); writer.println("</table>"); try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/world","root","root"); Statement st = conn.createStatement(); ResultSet rs = st.executeQuery("select * from country"); while(rs.next()) { String id = rs.getString(1); String location = rs.getString(2); String tid = rs.getString(3); String time = rs.getString(4); System.out.println ("ABBREVIATION:"+id+" FULLNAME:"+location+" REGION:"+tid+" SUBREGION:"+time); } rs.close(); st.close(); conn.close(); System.exit(0); } catch (ClassNotFoundException e) { System.out.println("ドライバを読み込めませんでした "+ e); } catch (SQLException e) { System.out.println("データベース接続エラー"+ e); } } public void doPost (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { }

}

試したこと

JAVAアプリケーションで実行した場合、コンソールに下記のように出ますので、public static void main(String[] args) は正常であると思われます。

ABBREVIATION:VAT FULLNAME:Holy See (Vatican City State) REGION:Europe SUBREGION:Southern Europe
ABBREVIATION:VCT FULLNAME:Saint Vincent and the Grenadines REGION:North America SUBREGION:Caribbean
ABBREVIATION:VEN FULLNAME:Venezuela REGION:South America SUBREGION:South America
ABBREVIATION:VGB FULLNAME:Virgin Islands, British REGION:North America SUBREGION:Caribbean
ABBREVIATION:VIR FULLNAME:Virgin Islands, U.S. REGION:North America SUBREGION:Caribbean
ABBREVIATION:VNM FULLNAME:Vietnam REGION:Asia SUBREGION:Southeast Asia
ABBREVIATION:VUT FULLNAME:Vanuatu REGION:Oceania SUBREGION:Melanesia
ABBREVIATION:WLF FULLNAME:Wallis and Futuna REGION:Oceania SUBREGION:Polynesia
ABBREVIATION:WSM FULLNAME:Samoa REGION:Oceania SUBREGION:Polynesia
ABBREVIATION:YEM FULLNAME:Yemen REGION:Asia SUBREGION:Middle East
ABBREVIATION:YUG FULLNAME:Yugoslavia REGION:Europe SUBREGION:Southern Europe
ABBREVIATION:ZAF FULLNAME:South Africa REGION:Africa SUBREGION:Southern Africa
ABBREVIATION:ZMB FULLNAME:Zambia REGION:Africa SUBREGION:Eastern Africa
ABBREVIATION:ZWE FULLNAME:Zimbabwe REGION:Africa SUBREGION:Eastern Africa

次に、Tomcatサーバで実行した場合、public void doGet (HttpServletRequest request, HttpServletResponse response)が実行されると思いますし、実際にWebページはwriter.printlnで出力したHTMLが表示されるのですが、その後にあるDBの中身の結果は表示されず、
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
とコンソールに出てしまいます。

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

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

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

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

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

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

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

guest

回答4

0

ソースコードは正常であると思われます。

接続とSELECTを実行できる最低限の設定やコードを載せてもらわないとエスパーきぼんぬになります。

投稿2018/04/23 11:04

Orlofsky

総合スコア16415

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

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

0

ベストアンサー

$CATALINA_HOME/commom/lib/にmysql-connector-java-<Version>-bin.jarをコピーして下さい。

投稿2018/04/23 13:36

hichon

総合スコア5737

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

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

guest

0

JDBCドライバーは配置されていますか?
Tomcatプラグインをお使いの場合は、プロジェクト内のWEB-INF/libディレクトリーにJDBCドライバーのJARファイルをコピーして、右クリック→【ビルド・パス】→【ビルド・パスに追加】を実行します。

投稿2018/04/23 12:13

casaganai

総合スコア144

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

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

HisashiSakamoto

2018/04/24 02:21

ありがとうございます。 Casaganaiさんのやり方でも、スムーズに成功したのですが、Hichonさんのやり方だと、Tomcatサーブレットコンテナそのものに対し、Jarファイルを追加することになるので、そのTomcatを利用するプロジェクト全てにこのJarが適用されることになるので、こちらをベストアンサーにさせていただきました。
guest

0

とりあえず

環境変数 CLASS_PATH は Tomcat は読み込みません。

また

JDBC 4.0(10年程前リリース)では Class.forName は自動化されていて必要ありません。

投稿2018/04/23 11:44

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問