質問編集履歴

5

タイトル変更

2021/08/09 23:42

投稿

Marina_
Marina_

スコア14

title CHANGED
@@ -1,1 +1,1 @@
1
- Could not create connection to database server.(SQLNonTransientConnectionException)MYSQL・JDBC関連のエラー
1
+ 【MYSQL・JDBCのエラー】Could not create connection to database server.(SQLNonTransientConnectionException)
body CHANGED
File without changes

4

タイトルの修正

2021/08/09 23:42

投稿

Marina_
Marina_

スコア14

title CHANGED
@@ -1,1 +1,1 @@
1
- Could not create connection to database server.(SQLNonTransientConnectionException)
1
+ Could not create connection to database server.(SQLNonTransientConnectionException)MYSQL・JDBC関連のエラー
body CHANGED
File without changes

3

タイトルを変更しました。

2021/08/09 12:37

投稿

Marina_
Marina_

スコア14

title CHANGED
@@ -1,1 +1,1 @@
1
- java MYSQLサーバーに接続できない
1
+ Could not create connection to database server.(SQLNonTransientConnectionException)
body CHANGED
File without changes

2

タグにJDBCを追加しました。

2021/08/09 12:32

投稿

Marina_
Marina_

スコア14

title CHANGED
File without changes
body CHANGED
File without changes

1

説明不足だったため、追記しました。

2021/08/09 12:31

投稿

Marina_
Marina_

スコア14

title CHANGED
File without changes
body CHANGED
@@ -1,11 +1,160 @@
1
+ 課題:
1
2
  java で MYSQLサーバーに接続できない
2
3
 
4
+ 環境:
5
+ ・Mac Big Sur
6
+ ・Pleiades All in One
3
- ログイン機能を持つソーが下記エラーが発生した
7
+ MySQL 8.0.25 (HomeBrewでインスを行なっ
4
- connector/jを使用している
8
+ dbeaver
5
- ・mysql-connector-java-8.0.26.jar を利用しているtomcatのlib直下に配置済み。
6
9
 
10
+ 行ったこと:
11
+ ・MySQLをインストール(Homebrewによって)
12
+ ・JDBCドライバの入手(公式webサイトから、connect/jでplatform independentをダウンロード)
13
+ ・JDBCドライバのパスを確認
14
+ ・確認したパスを、eclipseの該当プロジェクトのビルドパス>ライブラリ>外部JARの追加で、ビルドパスとして設定
15
+ ・Javaアプリケーションを作成し、教材で配布されたコードを配置
16
+ ・Javaアプリケーションとして実行したところ、エラーが発生
17
+
7
18
  エラー内容:
8
19
  java.sql.SQLNonTransientConnectionException: Could not create connection to database server.
9
20
 
10
21
  質問内容:
22
+
23
+ ```Java
24
+ package j4_01;
25
+
26
+ import java.sql.Connection;
27
+ import java.sql.DriverManager;
28
+ import java.sql.PreparedStatement;
29
+ import java.sql.ResultSet;
30
+ import java.sql.SQLException;
31
+
32
+ public class Sample4_01_1 {
33
+
34
+ //定数
35
+ private static String COMMA = ","; //コンマ
36
+
37
+ public static void main(String[] args) {
38
+ //-------------------------------------------
39
+ //データベースへの接続情報
40
+ //-------------------------------------------
41
+
42
+ //JDBCドライバの相対パス
43
+ //※バージョンによって変わる可能性があります(MySQL5系の場合は「com.mysql.jdbc.Driver」)
44
+ String driverName = "com.mysql.cj.jdbc.Driver";
45
+
46
+ //接続先のデータベース
47
+ //※データベース名が「test_db」でない場合は該当の箇所を変更してください
48
+ String jdbcUrl = "jdbc:mysql://localhost/test_db?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false";
49
+
50
+ //接続するユーザー名
51
+ //※ユーザー名が「test_user」でない場合は該当の箇所を変更してください
52
+ String userId = "test_user";
53
+
54
+ //接続するユーザーのパスワード
55
+ //※パスワードが「test_pass」でない場合は該当の箇所を変更してください
56
+ String userPass = "test_pass";
57
+
58
+ //-------------------------------------------
59
+ //① JDBCドライバのロード
60
+ //-------------------------------------------
61
+ try {
62
+ Class.forName(driverName); //JDBCドライバをロード&接続先として指定
63
+ } catch (ClassNotFoundException e) {
64
+ e.printStackTrace();
65
+ }
66
+
67
+
68
+ //JDBCの接続に使用するオブジェクトを宣言
69
+ //※finallyブロックでも扱うためtryブロック内で宣言してはいけないことに注意
70
+ Connection con = null ; // Connection(DB接続情報)格納用変数
71
+ PreparedStatement ps = null ; // PreparedStatement(SQL発行用オブジェクト)格納用変数
72
+ ResultSet rs = null ; // ResultSet(SQL抽出結果)格納用変数
73
+
74
+ try {
75
+ //-------------------------------------------
76
+ // ②接続の確立(Connectionオブジェクトの取得)
77
+ //-------------------------------------------
78
+ con = DriverManager.getConnection(jdbcUrl, userId, userPass);
79
+
80
+ //-------------------------------------------
81
+ // ③SQL文の送信 & ④抽出結果の取得
82
+ //-------------------------------------------
83
+
84
+ //SQL文の生成(SELECT)
85
+ StringBuffer buf = new StringBuffer() ;
86
+ buf.append(" SELECT ");
87
+ buf.append(" id , ");
88
+ buf.append(" name , ");
89
+ buf.append(" gender , ");
90
+ buf.append(" age , ");
91
+ buf.append(" course ");
92
+ buf.append(" FROM ");
93
+ buf.append(" uzuz_member ");
94
+ buf.append(" ORDER BY ");
95
+ buf.append(" id ");
96
+
97
+ //PreparedStatementオブジェクトを生成&発行するSQLをセット
98
+ ps = con.prepareStatement(buf.toString());
99
+
100
+ //SQL文の送信&抽出結果(ResultSetオブジェクト)の取得
101
+ rs = ps.executeQuery();
102
+
103
+ //ResultSetオブジェクトから1レコードずつデータを取得&加工&表示する
11
- この状況では、何を疑うべきでしょうか。
104
+ while (rs.next()) {
105
+
106
+ //1レコード分のデータを取得&加工(各カラムをコンマ綴りで結合)
107
+ StringBuffer rsbuf = new StringBuffer();
108
+ rsbuf.append(rs.getString("id"));
109
+ rsbuf.append(COMMA);
110
+ rsbuf.append(rs.getString("name"));
111
+ rsbuf.append(COMMA);
112
+ rsbuf.append(rs.getString("gender"));
113
+ rsbuf.append(COMMA);
114
+ rsbuf.append(rs.getString("age"));
115
+ rsbuf.append(COMMA);
116
+ rsbuf.append(rs.getString("course"));
117
+
118
+ //加工作成した1レコード分のデータを表示
119
+ System.out.println(rsbuf.toString());
120
+ }
121
+
122
+ } catch (SQLException e) {
123
+ e.printStackTrace();
124
+
125
+ } finally {
126
+ //-------------------------------------------
127
+ // ⑤接続の解除
128
+ //-------------------------------------------
129
+
130
+ //ResultSetオブジェクトの接続解除
131
+ if (rs != null) { //接続が確認できている場合のみ実施
132
+ try {
133
+ rs.close(); //接続の解除
134
+ } catch (SQLException e) {
135
+ e.printStackTrace();
136
+ }
137
+ }
138
+
139
+ //PreparedStatementオブジェクトの接続解除
140
+ if (ps != null) { //接続が確認できている場合のみ実施
141
+ try {
142
+ ps.close(); //接続の解除
143
+ } catch (SQLException e) {
144
+ e.printStackTrace();
145
+ }
146
+ }
147
+
148
+ //Connectionオブジェクトの接続解除
149
+ if (con != null) { //接続が確認できている場合のみ実施
150
+ try {
151
+ con.close(); //接続の解除
152
+ } catch (SQLException e) {
153
+ e.printStackTrace();
154
+ }
155
+ }
156
+ }
157
+ }
158
+ }
159
+
160
+ ```