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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

MySQL

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

JDBC

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

2655閲覧

Cloud9からJavaでMySQL接続を行いたい

tanaka_k

総合スコア14

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

MySQL

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

JDBC

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2020/04/12 06:47

JDBCドライバが読み込めない?

Cloud9上で、JavaのコードからMySQLへの接続を試みている中以下のエラーが発生しました。
クラスパスの問題とは思うのですが、調べてもeclipse上での修正方法しか出てきません。
分かる方いましたら、よろしくお願いいたします。

発生している問題・エラーメッセージ

ドライバを読み込めませんでした java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

該当のソースコード

Java

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

補足情報(FW/ツールのバージョンなど)

JDK1.8

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決したので、手順を記載しておきます。

<1> MySQLダウンロードページから「Connector/J」を選択します。
<2>「Select Operating System:」に「Platform Independent」を選択して、tar.gz又はzip形式どちらかをダウンロードします。(私の場合はzipをダウンロードしました)
<3> zipを解凍すると中に、「mysql-connector-java-8.0.19.jar」があるのでそれをコピーしcloud9上のjavaファイルと同様のディレクトリに置きます。
<4> その後は、以下のコマンド実行によりMySQL接続が出来ました。

bash

1$ CLASSPATH=.:mysql-connector-java-8.0.19.jar; export CLASSPATH 2$ javac 〇〇.java 3$ java 〇〇

但し、JDBCドライバのクラス名は以下のように修正する必要がありました。

Java

1Class.forName( "com.mysql.jdbc.Driver" ).newInstance(); 2              ↓ 3Class.forName( "com.mysql.cj.jdbc.Driver" ).newInstance(); 4

本来であれば、Cloud9上の「Run」ボタンからでもJDBCドライバを使用して接続を行いたかったのですが、「Run」からであるとJDBCドライバのクラスが読み込まれなかったので、現在はコマンドからクラスパスを設定してコンパイルも行うようにしています。
「Run」からでも同じように接続できるようにするためには、JDKのクラスパス設定を触るのかなと思います。(予想ですが)
「Run」からでも実行できるよう、今後も時間があれば調査していきます。

投稿2020/04/12 16:02

tanaka_k

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問