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

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

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

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

JDBC

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

解決済

【MYSQL・JDBCのエラー】Could not create connection to database server.(SQLNonTransientConnectionException)

Marina_
Marina_

総合スコア14

MySQL

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

JDBC

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

1回答

0評価

0クリップ

7233閲覧

投稿2021/08/08 09:48

編集2021/08/09 23:42

課題:
java で MYSQLサーバーに接続できない

環境:
・Mac Big Sur
・Pleiades All in One
・MySQL 8.0.25 (HomeBrewでインストールを行なった)
・dbeaver

行ったこと:
・MySQLをインストール(Homebrewによって)
・JDBCドライバの入手(公式webサイトから、connect/jでplatform independentをダウンロード)
・JDBCドライバのパスを確認
・確認したパスを、eclipseの該当プロジェクトのビルドパス>ライブラリ>外部JARの追加で、ビルドパスとして設定
・Javaアプリケーションを作成し、教材で配布されたコードを配置
・Javaアプリケーションとして実行したところ、エラーが発生

エラー内容:
java.sql.SQLNonTransientConnectionException: Could not create connection to database server.

質問内容:

Java

package j4_01; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Sample4_01_1 { //定数 private static String COMMA = ","; //コンマ public static void main(String[] args) { //------------------------------------------- //データベースへの接続情報 //------------------------------------------- //JDBCドライバの相対パス //※バージョンによって変わる可能性があります(MySQL5系の場合は「com.mysql.jdbc.Driver」) String driverName = "com.mysql.cj.jdbc.Driver"; //接続先のデータベース //※データベース名が「test_db」でない場合は該当の箇所を変更してください String jdbcUrl = "jdbc:mysql://localhost/test_db?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false"; //接続するユーザー名 //※ユーザー名が「test_user」でない場合は該当の箇所を変更してください String userId = "test_user"; //接続するユーザーのパスワード //※パスワードが「test_pass」でない場合は該当の箇所を変更してください String userPass = "test_pass"; //------------------------------------------- //① JDBCドライバのロード //------------------------------------------- try { Class.forName(driverName); //JDBCドライバをロード&接続先として指定 } catch (ClassNotFoundException e) { e.printStackTrace(); } //JDBCの接続に使用するオブジェクトを宣言 //※finallyブロックでも扱うためtryブロック内で宣言してはいけないことに注意 Connection con = null ; // Connection(DB接続情報)格納用変数 PreparedStatement ps = null ; // PreparedStatement(SQL発行用オブジェクト)格納用変数 ResultSet rs = null ; // ResultSet(SQL抽出結果)格納用変数 try { //------------------------------------------- // ②接続の確立(Connectionオブジェクトの取得) //------------------------------------------- con = DriverManager.getConnection(jdbcUrl, userId, userPass); //------------------------------------------- // ③SQL文の送信 & ④抽出結果の取得 //------------------------------------------- //SQL文の生成(SELECT) StringBuffer buf = new StringBuffer() ; buf.append(" SELECT "); buf.append(" id , "); buf.append(" name , "); buf.append(" gender , "); buf.append(" age , "); buf.append(" course "); buf.append(" FROM "); buf.append(" uzuz_member "); buf.append(" ORDER BY "); buf.append(" id "); //PreparedStatementオブジェクトを生成&発行するSQLをセット ps = con.prepareStatement(buf.toString()); //SQL文の送信&抽出結果(ResultSetオブジェクト)の取得 rs = ps.executeQuery(); //ResultSetオブジェクトから1レコードずつデータを取得&加工&表示する while (rs.next()) { //1レコード分のデータを取得&加工(各カラムをコンマ綴りで結合) StringBuffer rsbuf = new StringBuffer(); rsbuf.append(rs.getString("id")); rsbuf.append(COMMA); rsbuf.append(rs.getString("name")); rsbuf.append(COMMA); rsbuf.append(rs.getString("gender")); rsbuf.append(COMMA); rsbuf.append(rs.getString("age")); rsbuf.append(COMMA); rsbuf.append(rs.getString("course")); //加工作成した1レコード分のデータを表示 System.out.println(rsbuf.toString()); } } catch (SQLException e) { e.printStackTrace(); } finally { //------------------------------------------- // ⑤接続の解除 //------------------------------------------- //ResultSetオブジェクトの接続解除 if (rs != null) { //接続が確認できている場合のみ実施 try { rs.close(); //接続の解除 } catch (SQLException e) { e.printStackTrace(); } } //PreparedStatementオブジェクトの接続解除 if (ps != null) { //接続が確認できている場合のみ実施 try { ps.close(); //接続の解除 } catch (SQLException e) { e.printStackTrace(); } } //Connectionオブジェクトの接続解除 if (con != null) { //接続が確認できている場合のみ実施 try { con.close(); //接続の解除 } catch (SQLException e) { e.printStackTrace(); } } } } }

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

m.ts10806

2021/08/08 11:28

コードと設定と環境一通り提示しないと応えようがないですし、「疑われること」ならエラーメッセージで検索して出てくるような内容です。 いずれにしても質問タグ「MySQL」だけでは回答えられにくいかと。
Marina_

2021/08/09 07:46

m.ts10806さん ご指摘いただき、誠にありがとうございます。 説明不足で申し訳ございません。 コードと設定と環境がないと答えられない問題なのですね。 今後、説明すべき点としなくてもいい点の区別がつくよう、意識して書いていくようにいたします。
Marina_

2021/08/09 07:47

先ほど追記させていただきました。 もしよろしければ、ご教授頂けますと大変幸いに存じます。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

MySQL

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

JDBC

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