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

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

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

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

JDBC

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

JSP

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

Java

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

受付中

java.sql.SQLException: No suitable driver foundを解決したい

Yakusugi
Yakusugi

総合スコア70

MySQL

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

JDBC

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

JSP

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

Java

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

1回答

0評価

1クリップ

495閲覧

投稿2022/01/03 00:18

編集2022/01/12 10:55

ServletとJSPで家計簿アプリを作成しています。
Insert文を発行し、MySQLにユーザ入力値を入れようとすると、
「java.sql.SQLException: No suitable driver」エラーが発生してしまいます。
現状の設定は以下のようになっています。
WEB-INF
lib
mysql-connector-java-8.0.11.jar
上記をクラスパスにも登録しています。
解決のため、ご助力頂けますと幸いです。

イメージ説明

イメージ説明

BudgetTrackerInsertDao.java

package com.jdbc.budgettracker.dao; import java.io.FileInputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Date; import java.util.Properties; import com.jdbc.budgettracker.core.BudgetTrackerDto; public class BudgetTrackerInsertDao { BudgetTrackerDto btd; // PreparedStatement pstmt = null; ResultSet rset = null; private Connection myConn; private static final String INSERTINTOBUDGETTABLE = "INSERT INTO budget_table(id,Date,StoreName, ProductName, ProductType, Price) VALUE (?,?,?,?,?,?);"; private static Connection getConnection() { try { // get db properties Properties props = new Properties(); props.load(new FileInputStream( "/home/yosuke/servlet_budget_tracker_workspace/budget_tracker_servlet/WebContent/WEB-INF/sql/config_budgettracker.properties")); String user = props.getProperty("user"); String password = props.getProperty("password"); String dburl = props.getProperty("dburl"); Connection con = DriverManager.getConnection(dburl, user, password); return con; } catch (Exception e) { throw new IllegalStateException(e); } } //Insert public void insertIntoTable(BudgetTrackerDto btd) throws SQLException { int rowsCount = 0; PreparedStatement pstmt = null; try { // DBに接続 myConn = BudgetTrackerInsertDao.getConnection(); pstmt = myConn.prepareStatement(INSERTINTOBUDGETTABLE); pstmt.setInt(1, btd.getId()); Date date = btd.getDate(); long timeInMilliSeconds = date.getTime(); java.sql.Date sqlDate = new java.sql.Date(timeInMilliSeconds); pstmt.setDate(2, sqlDate); pstmt.setString(3, btd.getStoreName()); pstmt.setString(4, btd.getProductName()); pstmt.setString(5, btd.getProductType()); pstmt.setInt(6, btd.getPrice()); // SQL文発行 pstmt.executeUpdate(); System.out.println("Successfully added"); pstmt.close(); // rowsCount = pstmt.executeUpdate(sql); } catch (SQLException e) { System.out.println("Errorが発生しました!\n" + e + "\n"); } finally { // リソースの開放 if (pstmt != null) { try { pstmt.close(); } catch (SQLException ignore) { } } if (myConn != null) { try { myConn.close(); } catch (SQLException ignore) { } } } } }

BudgetTrackerInsertController.java

package com.jdbc.budgettracker.controller; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.jdbc.budgettracker.core.BudgetTrackerDto; import com.jdbc.budgettracker.dao.BudgetTrackerInsertDao; import com.jdbc.budgettracker.dao.BudgetTrackerSearchDao; public class BudgetTrackerInsertController extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection conn = null; PreparedStatement pstmt = null; ResultSet rset = null; BudgetTrackerDto budgetTrackerDto; BudgetTrackerInsertDao budgetTrackerInsertDao = null; request.setCharacterEncoding("Windows-31J"); // request id int id = 0; try { id = Integer.parseInt(request.getParameter("id")); } catch (NumberFormatException e) { System.out.println(id + " は数値ではありません。 "); } // request date String dateStr = request.getParameter("date"); Date date = null; try { date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr); } catch (ParseException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // long timeInMilliSeconds = date.getTime(); // java.sql.Date sqlDate1 = new java.sql.Date(timeInMilliSeconds); // request store name String storeName = request.getParameter("storeName"); // request product name String productName = request.getParameter("productName"); // request product type String productType = request.getParameter("productType"); // request price int price = 0; try { price = Integer.parseInt(request.getParameter("price")); } catch (NumberFormatException e) { System.out.println(price + " は数値ではありません。 "); } budgetTrackerDto = new BudgetTrackerDto(); budgetTrackerDto.setId(id); budgetTrackerDto.setDate(date); budgetTrackerDto.setStoreName(storeName); budgetTrackerDto.setProductName(productName); budgetTrackerDto.setProductType(productType); budgetTrackerDto.setPrice(price); budgetTrackerInsertDao = new BudgetTrackerInsertDao(); try { budgetTrackerInsertDao.insertIntoTable(budgetTrackerDto); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } // request.setAttribute("result", rset); // // request.getRequestDispatcher("/search.jsp").forward(request, response); } }

エラー内容

0 は数値ではありません。 Jan 03, 2022 9:05:02 AM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [InsertController] in context with path [/budget_tracker_servlet] threw exception java.lang.IllegalStateException: java.sql.SQLException: No suitable driver found for jdbc:mysql://192.168.0.68:3306/budgettracker?allowPublicKeyRetrieval=true&useSSL=false at com.jdbc.budgettracker.dao.BudgetTrackerInsertDao.getConnection(BudgetTrackerInsertDao.java:36) at com.jdbc.budgettracker.dao.BudgetTrackerInsertDao.insertIntoTable(BudgetTrackerInsertDao.java:47) at com.jdbc.budgettracker.controller.BudgetTrackerInsertController.doPost(BudgetTrackerInsertController.java:93) at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1722) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:831) Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://192.168.0.68:3306/budgettracker?allowPublicKeyRetrieval=true&useSSL=false at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228) at com.jdbc.budgettracker.dao.BudgetTrackerInsertDao.getConnection(BudgetTrackerInsertDao.java:33) ... 26 more

dburl設定

dburl=jdbc:mysql://192.168.0.68:3306/budgettracker?allowPublicKeyRetrieval=true&useSSL=false

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

YT0014

2022/01/03 05:31

dburlの設定、jdbc.driversの設定をご提示ください。
Yakusugi

2022/01/03 07:04

dburlの設定はproperty file(config_budgettracker.properties)の設定で良いでしょうか。 内容を追記いたしました。 また、jdbc.driversの設定はどこから参照可能でしょうか。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

MySQL

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

JDBC

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

JSP

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

Java

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。