質問編集履歴

5

タイトル変更

2021/08/09 23:42

投稿

Marina_
Marina_

score14

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

4

タイトルの修正

2021/08/09 23:42

投稿

Marina_
Marina_

score14

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

3

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

2021/08/09 12:37

投稿

Marina_
Marina_

score14

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

2

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

2021/08/09 12:32

投稿

Marina_
Marina_

score14

test CHANGED
File without changes
test CHANGED
File without changes

1

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

2021/08/09 12:31

投稿

Marina_
Marina_

score14

test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,34 @@
1
+ 課題:
2
+
1
3
  java で MYSQLサーバーに接続できない
2
4
 
3
5
 
4
6
 
7
+ 環境:
8
+
9
+ ・Mac Big Sur
10
+
11
+ ・Pleiades All in One
12
+
13
+ ・MySQL 8.0.25 (HomeBrewでインストールを行なった)
14
+
15
+ ・dbeaver
16
+
17
+
18
+
19
+ 行ったこと:
20
+
21
+ ・MySQLをインストール(Homebrewによって)
22
+
23
+ ・JDBCドライバの入手(公式webサイトから、connect/jでplatform independentをダウンロード)
24
+
25
+ ・JDBCドライバのパスを確認
26
+
27
+ ・確認したパスを、eclipseの該当プロジェクトのビルドパス>ライブラリ>外部JARの追加で、ビルドパスとして設定
28
+
29
+ ・Javaアプリケーションを作成し、教材で配布されたコードを配置
30
+
5
- ログイ機能を持つソースコードを実行したが下記エラーが発生した
31
+ Javaアプリケーショとして実行したところ、エラーが発生
6
-
7
- ・connector/jを使用している
8
-
9
- ・mysql-connector-java-8.0.26.jar を利用しているtomcatのlib直下に配置済み。
10
32
 
11
33
 
12
34
 
@@ -18,4 +40,280 @@
18
40
 
19
41
  質問内容:
20
42
 
43
+
44
+
45
+ ```Java
46
+
47
+ package j4_01;
48
+
49
+
50
+
51
+ import java.sql.Connection;
52
+
53
+ import java.sql.DriverManager;
54
+
55
+ import java.sql.PreparedStatement;
56
+
57
+ import java.sql.ResultSet;
58
+
59
+ import java.sql.SQLException;
60
+
61
+
62
+
63
+ public class Sample4_01_1 {
64
+
65
+
66
+
67
+ //定数
68
+
69
+ private static String COMMA = ","; //コンマ
70
+
71
+
72
+
73
+ public static void main(String[] args) {
74
+
75
+ //-------------------------------------------
76
+
77
+ //データベースへの接続情報
78
+
79
+ //-------------------------------------------
80
+
81
+
82
+
83
+ //JDBCドライバの相対パス
84
+
85
+ //※バージョンによって変わる可能性があります(MySQL5系の場合は「com.mysql.jdbc.Driver」)
86
+
87
+ String driverName = "com.mysql.cj.jdbc.Driver";
88
+
89
+
90
+
91
+ //接続先のデータベース
92
+
93
+ //※データベース名が「test_db」でない場合は該当の箇所を変更してください
94
+
95
+ String jdbcUrl = "jdbc:mysql://localhost/test_db?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false";
96
+
97
+
98
+
99
+ //接続するユーザー名
100
+
101
+ //※ユーザー名が「test_user」でない場合は該当の箇所を変更してください
102
+
103
+ String userId = "test_user";
104
+
105
+
106
+
107
+ //接続するユーザーのパスワード
108
+
109
+ //※パスワードが「test_pass」でない場合は該当の箇所を変更してください
110
+
111
+ String userPass = "test_pass";
112
+
113
+
114
+
115
+ //-------------------------------------------
116
+
117
+ //① JDBCドライバのロード
118
+
119
+ //-------------------------------------------
120
+
121
+ try {
122
+
123
+ Class.forName(driverName); //JDBCドライバをロード&接続先として指定
124
+
125
+ } catch (ClassNotFoundException e) {
126
+
127
+ e.printStackTrace();
128
+
129
+ }
130
+
131
+
132
+
133
+
134
+
135
+ //JDBCの接続に使用するオブジェクトを宣言
136
+
137
+ //※finallyブロックでも扱うためtryブロック内で宣言してはいけないことに注意
138
+
139
+ Connection con = null ; // Connection(DB接続情報)格納用変数
140
+
141
+ PreparedStatement ps = null ; // PreparedStatement(SQL発行用オブジェクト)格納用変数
142
+
143
+ ResultSet rs = null ; // ResultSet(SQL抽出結果)格納用変数
144
+
145
+
146
+
147
+ try {
148
+
149
+ //-------------------------------------------
150
+
151
+ // ②接続の確立(Connectionオブジェクトの取得)
152
+
153
+ //-------------------------------------------
154
+
155
+ con = DriverManager.getConnection(jdbcUrl, userId, userPass);
156
+
157
+
158
+
159
+ //-------------------------------------------
160
+
161
+ // ③SQL文の送信 & ④抽出結果の取得
162
+
163
+ //-------------------------------------------
164
+
165
+
166
+
167
+ //SQL文の生成(SELECT)
168
+
169
+ StringBuffer buf = new StringBuffer() ;
170
+
171
+ buf.append(" SELECT ");
172
+
173
+ buf.append(" id , ");
174
+
175
+ buf.append(" name , ");
176
+
177
+ buf.append(" gender , ");
178
+
179
+ buf.append(" age , ");
180
+
181
+ buf.append(" course ");
182
+
183
+ buf.append(" FROM ");
184
+
185
+ buf.append(" uzuz_member ");
186
+
187
+ buf.append(" ORDER BY ");
188
+
189
+ buf.append(" id ");
190
+
191
+
192
+
193
+ //PreparedStatementオブジェクトを生成&発行するSQLをセット
194
+
195
+ ps = con.prepareStatement(buf.toString());
196
+
197
+
198
+
199
+ //SQL文の送信&抽出結果(ResultSetオブジェクト)の取得
200
+
201
+ rs = ps.executeQuery();
202
+
203
+
204
+
205
+ //ResultSetオブジェクトから1レコードずつデータを取得&加工&表示する
206
+
21
- この状況では、何を疑うべきでしょうか。
207
+ while (rs.next()) {
208
+
209
+
210
+
211
+ //1レコード分のデータを取得&加工(各カラムをコンマ綴りで結合)
212
+
213
+ StringBuffer rsbuf = new StringBuffer();
214
+
215
+ rsbuf.append(rs.getString("id"));
216
+
217
+ rsbuf.append(COMMA);
218
+
219
+ rsbuf.append(rs.getString("name"));
220
+
221
+ rsbuf.append(COMMA);
222
+
223
+ rsbuf.append(rs.getString("gender"));
224
+
225
+ rsbuf.append(COMMA);
226
+
227
+ rsbuf.append(rs.getString("age"));
228
+
229
+ rsbuf.append(COMMA);
230
+
231
+ rsbuf.append(rs.getString("course"));
232
+
233
+
234
+
235
+ //加工作成した1レコード分のデータを表示
236
+
237
+ System.out.println(rsbuf.toString());
238
+
239
+ }
240
+
241
+
242
+
243
+ } catch (SQLException e) {
244
+
245
+ e.printStackTrace();
246
+
247
+
248
+
249
+ } finally {
250
+
251
+ //-------------------------------------------
252
+
253
+ // ⑤接続の解除
254
+
255
+ //-------------------------------------------
256
+
257
+
258
+
259
+ //ResultSetオブジェクトの接続解除
260
+
261
+ if (rs != null) { //接続が確認できている場合のみ実施
262
+
263
+ try {
264
+
265
+ rs.close(); //接続の解除
266
+
267
+ } catch (SQLException e) {
268
+
269
+ e.printStackTrace();
270
+
271
+ }
272
+
273
+ }
274
+
275
+
276
+
277
+ //PreparedStatementオブジェクトの接続解除
278
+
279
+ if (ps != null) { //接続が確認できている場合のみ実施
280
+
281
+ try {
282
+
283
+ ps.close(); //接続の解除
284
+
285
+ } catch (SQLException e) {
286
+
287
+ e.printStackTrace();
288
+
289
+ }
290
+
291
+ }
292
+
293
+
294
+
295
+ //Connectionオブジェクトの接続解除
296
+
297
+ if (con != null) { //接続が確認できている場合のみ実施
298
+
299
+ try {
300
+
301
+ con.close(); //接続の解除
302
+
303
+ } catch (SQLException e) {
304
+
305
+ e.printStackTrace();
306
+
307
+ }
308
+
309
+ }
310
+
311
+ }
312
+
313
+ }
314
+
315
+ }
316
+
317
+
318
+
319
+ ```