前提・実現したいこと
JavaプログラムからMysqlにJDBCインターフェースで接続すること。
発生している問題・エラーメッセージ
コンパイルは正しく終了したが、実行時に「ドライバを読み込めませんでした java.lang.ClassNotFoundException: com.mysql.jdbc.Driver」になる。
該当のソースコード
Java
1 2import java.sql.Connection; 3import java.sql.DriverManager; 4import java.sql.ResultSet; 5import java.sql.SQLException; 6import java.sql.Statement; 7 8/** 9* localhost上のデータベースと接続し、取得したデータをコンソール出力する。 10*/ 11public class UseJdbc { 12 13 public static void main( String args[] ) throws Exception { 14 15 /*接続先サーバー名を"localhost"で与えることを示している*/ 16 String servername = "localhost"; 17 18 /*接続するデータベース名をsenngokuとしている*/ 19 String databasename = "shop"; 20 21 /*データベースの接続に用いるユーザ名をrootユーザとしている*/ 22 String user = "root"; 23 24 /*データベースの接続に用いるユーザのパスワードを指定している*/ 25 String password = "xxxxxx"; 26 27 /*取り扱う文字コードをUTF-8文字としている*/ 28 String serverencoding = "UTf8mb4"; 29 30 /*データベースをあらわすURLを設定している*/ 31 String url = "jdbc:mysql://localhost/" + databasename; 32 33 /*MySQLの場合、URLの形式は次のようになります。 34 jdbc:mysql://(サーバ名)/(データベース名)*/ 35 36 /*↑データベースをあらわすURL(データベースURL)は、データベースに接続する場合に 37 必要となる情報をセットした文字列である。 38 この文字列の構造は、"jdbc"、サブプロトコル、サブネームの3つの部分から構成される。*/ 39 40 /*接続を表すConnectionオブジェクトを初期化*/ 41 Connection con = null; 42 43 try{ 44 45 /*クラスローダによりJDBCドライバを読み込んでいることを示している。 46 引数は、データベースにアクセスするためのJDBCドライバのクラス名である。*/ 47 Class.forName( "com.mysql.jdbc.Driver" ).newInstance(); 48 49 /*DriverManagerクラスのgetConnectionメソッドを使ってデータベースに接続する。*/ 50 con = DriverManager.getConnection( url, user, password ); 51 52 System.out.println( "Connected...." ); 53 54 /*データベースの接続後に、sql文をデータベースに直接渡すのではなく、 55 sqlコンテナの役割を果たすオブジェクトに渡すためのStatementオブジェクトを作成する。*/ 56 Statement st = con.createStatement(); 57 58 /*SQL文を作成する*/ 59 String sqlStr = "SELECT * FROM busyou"; 60 61 /*SQL文を実行した結果セットをResultSetオブジェクトに格納している*/ 62 ResultSet result = st.executeQuery( sqlStr ); 63 64 /*クエリ結果を1レコードずつ出力していく*/ 65 while( result.next() ) 66 { 67 /*getString()メソッドは、引数に指定されたフィールド名(列)の値をStringとして取得する*/ 68 String str1 = result.getString( "shohin_id" ); 69 String str2 = result.getString( "shohin_mei" ); 70 String str3 = result.getString( "shohin_bunrui" ); 71 String str4 = result.getString( "hanbai_tanka" ); 72 String str5 = result.getString( "shiire_tanka" ); 73 String str6 = result.getString( "torokubi_tanka" ); 74 System.out.println( str1 + ", " + str2 + ", " + str3 + "," + str4+ "," +str5+ "," +str6); 75 } 76 77 /*ResultSetオブジェクトを閉じる*/ 78 result.close(); 79 80 /*Statementオブジェクトを閉じる*/ 81 st.close(); 82 83 /*Connectionオブジェクトを閉じる*/ 84 con.close(); 85 } 86 catch( SQLException e ){ 87 88 /*エラーメッセージ出力*/ 89 System.out.println( "Connection Failed. : " + e.toString() ); 90 91 /*例外を投げちゃうぞ*/ 92 throw new Exception(); 93 94 }catch (ClassNotFoundException e){ 95 96 /*エラーメッセージ出力*/ 97 System.out.println("ドライバを読み込めませんでした " + e); 98 } 99 finally{ 100 try{ 101 if( con != null ){ 102 con.close(); 103 } 104 } 105 catch(Exception e){ 106 107 /*エラーメッセージ出力*/ 108 System.out.println( "Exception2! :" + e.toString() ); 109 110 /*例外を投げちゃうぞ*/ 111 throw new Exception(); 112 } 113 } 114 } 115}
試したこと
mysql-connector-java-8.0.17.jarをダウンロードし、Usejdbcクラスと同じディレクトリに格納したが、結果は同じでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。