課題:
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
1package j4_01; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8 9public class Sample4_01_1 { 10 11 //定数 12 private static String COMMA = ","; //コンマ 13 14 public static void main(String[] args) { 15 //------------------------------------------- 16 //データベースへの接続情報 17 //------------------------------------------- 18 19 //JDBCドライバの相対パス 20 //※バージョンによって変わる可能性があります(MySQL5系の場合は「com.mysql.jdbc.Driver」) 21 String driverName = "com.mysql.cj.jdbc.Driver"; 22 23 //接続先のデータベース 24 //※データベース名が「test_db」でない場合は該当の箇所を変更してください 25 String jdbcUrl = "jdbc:mysql://localhost/test_db?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false"; 26 27 //接続するユーザー名 28 //※ユーザー名が「test_user」でない場合は該当の箇所を変更してください 29 String userId = "test_user"; 30 31 //接続するユーザーのパスワード 32 //※パスワードが「test_pass」でない場合は該当の箇所を変更してください 33 String userPass = "test_pass"; 34 35 //------------------------------------------- 36 //① JDBCドライバのロード 37 //------------------------------------------- 38 try { 39 Class.forName(driverName); //JDBCドライバをロード&接続先として指定 40 } catch (ClassNotFoundException e) { 41 e.printStackTrace(); 42 } 43 44 45 //JDBCの接続に使用するオブジェクトを宣言 46 //※finallyブロックでも扱うためtryブロック内で宣言してはいけないことに注意 47 Connection con = null ; // Connection(DB接続情報)格納用変数 48 PreparedStatement ps = null ; // PreparedStatement(SQL発行用オブジェクト)格納用変数 49 ResultSet rs = null ; // ResultSet(SQL抽出結果)格納用変数 50 51 try { 52 //------------------------------------------- 53 // ②接続の確立(Connectionオブジェクトの取得) 54 //------------------------------------------- 55 con = DriverManager.getConnection(jdbcUrl, userId, userPass); 56 57 //------------------------------------------- 58 // ③SQL文の送信 & ④抽出結果の取得 59 //------------------------------------------- 60 61 //SQL文の生成(SELECT) 62 StringBuffer buf = new StringBuffer() ; 63 buf.append(" SELECT "); 64 buf.append(" id , "); 65 buf.append(" name , "); 66 buf.append(" gender , "); 67 buf.append(" age , "); 68 buf.append(" course "); 69 buf.append(" FROM "); 70 buf.append(" uzuz_member "); 71 buf.append(" ORDER BY "); 72 buf.append(" id "); 73 74 //PreparedStatementオブジェクトを生成&発行するSQLをセット 75 ps = con.prepareStatement(buf.toString()); 76 77 //SQL文の送信&抽出結果(ResultSetオブジェクト)の取得 78 rs = ps.executeQuery(); 79 80 //ResultSetオブジェクトから1レコードずつデータを取得&加工&表示する 81 while (rs.next()) { 82 83 //1レコード分のデータを取得&加工(各カラムをコンマ綴りで結合) 84 StringBuffer rsbuf = new StringBuffer(); 85 rsbuf.append(rs.getString("id")); 86 rsbuf.append(COMMA); 87 rsbuf.append(rs.getString("name")); 88 rsbuf.append(COMMA); 89 rsbuf.append(rs.getString("gender")); 90 rsbuf.append(COMMA); 91 rsbuf.append(rs.getString("age")); 92 rsbuf.append(COMMA); 93 rsbuf.append(rs.getString("course")); 94 95 //加工作成した1レコード分のデータを表示 96 System.out.println(rsbuf.toString()); 97 } 98 99 } catch (SQLException e) { 100 e.printStackTrace(); 101 102 } finally { 103 //------------------------------------------- 104 // ⑤接続の解除 105 //------------------------------------------- 106 107 //ResultSetオブジェクトの接続解除 108 if (rs != null) { //接続が確認できている場合のみ実施 109 try { 110 rs.close(); //接続の解除 111 } catch (SQLException e) { 112 e.printStackTrace(); 113 } 114 } 115 116 //PreparedStatementオブジェクトの接続解除 117 if (ps != null) { //接続が確認できている場合のみ実施 118 try { 119 ps.close(); //接続の解除 120 } catch (SQLException e) { 121 e.printStackTrace(); 122 } 123 } 124 125 //Connectionオブジェクトの接続解除 126 if (con != null) { //接続が確認できている場合のみ実施 127 try { 128 con.close(); //接続の解除 129 } catch (SQLException e) { 130 e.printStackTrace(); 131 } 132 } 133 } 134 } 135} 136
回答1件
あなたの回答
tips
プレビュー