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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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で作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

1回答

3664閲覧

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

Yakusugi

総合スコア123

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で作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

1クリップ

投稿2022/01/03 00:18

編集2022/01/03 07:02

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

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

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

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

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

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

YT0014

2022/01/03 05:31

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

2022/01/03 07:04

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

回答1

0

jdbc.driversの設定が必要です。

未設定のようなので、JDBCドライバーが読み込まれることはありません。

java.sql.DriverManagerの正しい使い方をご確認ください。
クラスDriverManager

投稿2022/01/03 07:11

YT0014

総合スコア1708

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問