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

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で作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

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

Q&A

解決済

1回答

1326閲覧

JDBCドライバが認識されずデータベースに接続出来ない

kiecna

総合スコア5

MySQL

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

JDBC

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

Java

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

Eclipse

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

0グッド

0クリップ

投稿2023/01/25 07:36

編集2023/01/26 07:34

前提

データベースに接続する部分で下記エラーが出力されます。

最初のエラー:No suitable driver found for jdbc:mysql://127.0.0.1:3306/

↓Class.forName("com.mysql.jdbc.Driver");を追加

現在のエラー:at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException

試したこと

jar=mysql-connector-java-8.0.29.jarを再度追加
⇒変化なし
イメージ説明
イメージ説明

try( の前に下記を追加
try {Class.forName("com.mysql.jdbc.Driver");
⇒エラー内容が変化「at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException」

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

java.sql.SQLException: After end of result set at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) at com.mysql.cj.jdbc.result.ResultSetImpl.checkRowPos(ResultSetImpl.java:532) at com.mysql.cj.jdbc.result.ResultSetImpl.getString(ResultSetImpl.java:878) at com.mysql.cj.jdbc.result.ResultSetImpl.getString(ResultSetImpl.java:896) at RegionServlet.doPost(RegionServlet.java:137) 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:1732) 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:833)

該当のソースコード

try { Class.forName("com.mysql.cj.jdbc.Driver"); //データベースに接続する try (Connection con = DriverManager.getConnection(url, user, password); PreparedStatement ps = con.prepareStatement(sql)){ //sqlの実行 ResultSet rs = ps.executeQuery(); //データの数 int dataNum = 0; while (rs.next()) { ++dataNum; System.out.println(dataNum + "回目"); } //データ格納の配列 String[][] array = new String[dataNum][3]; //データの数だけ繰り返す for (int a=0; a < dataNum; a++) { //取得したデータのname_jpを取得 array[a][0] = rs.getString("name_jp"); //取得したデータのname_jpを取得 array[a][1] = rs.getString("name_eng"); //取得したデータのname_jpを取得 array[a][2] = rs.getString("region"); } //リクエストスコープに値を設定する request.setAttribute("dataNum", dataNum); request.setAttribute("array", array); // region.jspへフォワード RequestDispatcher rd = request.getRequestDispatcher("/region.jsp"); rd.forward(request, response); }}catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); }finally { System.out.println(sql); System.out.println("プログラムを終了します。"); }

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

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

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

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

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

m.ts10806

2023/01/25 07:52

クラスパスへの追加(プロジェクトへのリンク)はされてますか? 設定確認してください
kiecna

2023/01/25 08:00

コメントありがとうございます。 クラスパスへの追加は確認しています。 また今朝までデータベースに接続出来ていました。
jimbe

2023/01/25 08:46 編集

>今朝までデータベースに接続出来ていました。 なら、それ以降に何をしたかでしょう。 「何もしていません」ということなら、出来ることも無いかもしれません。
m.ts10806

2023/01/25 09:17

設定内容がわかる画面キャプチャを提示してください。 質問は編集できますので
xebme

2023/01/26 00:49

jar=mysql-connector-java-8.0.29.jarを再度追加 ⇒変化なし この設定を行なっているのは?フレームワークを使っていますか。
m.ts10806

2023/01/26 03:34

コメント欄ではマークダウン使えません。 質問本文を編集してください。
kiecna

2023/01/26 04:16

すみません。質問本文を編集しました。 下記を追記してみたところ、エラー内容がSQLExceptionに変化したのですが、これはJDBCドライバの問題ではなくSQL自体の問題でしょうか。 Class.forName("com.mysql.jdbc.Driver");
m.ts10806

2023/01/26 06:03 編集

エラー詳細確認して質問本文に追記してください。 実際のコードがないと何とも言えませんが。
kiecna

2023/01/26 07:02

すみません。質問本文に追記しました。
m.ts10806

2023/01/26 07:07

コードが一部しか提示されていませんが、何か問題(文字数など)がありましたか? 現状だと「"After end of result set "でそのまま調べてください」としか言えませんが(teratailの過去質問もでてきますね)
kiecna

2023/01/26 07:35

お手数をお掛けしてすみません。ソースコードを追記しました。
guest

回答1

0

自己解決

件数を取得するためSQLを、レコード取得SQLとは別に発行する
⇒事前に件数ログは出せるようになるが、余分にSQLを発行することになる。

投稿2023/01/27 08:00

kiecna

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問