Java-データベース接続 Java-MySQL接続⑤：データベース（MySQL）に接続してテーブル情報を検索、また検索結果を表示する / 2017年9月

#MySQL への接続
データベース(MySQL)に接続して、テーブル情報を検索します。また検索結果を表示してみます。

まず、以下の定義書をみて、コマンドプロントからデータベース及びテーブルを作成しておきます。

データベース名:testdb
テーブル名 :test_table
テーブル定義 :

| Field | Type | Null | Key | Default | Extra |
|:-----------:|:------------:|:------------:|:------------:|:------------:|:------------:|
| user_id       |        int(11) |     YES     |          |     NULL     |          |
| user_name     |      varchar(255) |    YES    |        |    NULL    |        |


次に INSERT 文を使って、test_table にデータを登録しておきましょう

| user_name | user_id | 
|:-----------:|:------------:|
| 1      |        taro |
| 2      |      jiro |
| 3      |      hanako |


#テキストエディタ(メモ帳)とコマンドプロンプトを使用する場合
コマンドプロンプトにて、notepad Con2Mysql.java を入力し、メモ帳を開きます

#Eclipse を使用する場合
パッケージ・エクスプローラーの空白部分を右クリック->新規->Java プロジェクトを選択
「新規 Java プロジェクト」画面が表示されます

プロジェクト名:Con2Mysql
とします

実行環境 JRE の使用:JavaSE-1.8 とします。 「次へ」ボタンを押下
「外部 JAR の追加」ボタンを押下
※外部 JAR の追加は、プロジェクト毎に設定が必要!!!


C:\Program Files\Java\jdk x.x.x_xxx\lib を開きます
※xはインストールされている JDK のバージョンによって異なります

mysql-connector-java-x.x.xx-bin.jar を選択して、「開く」ボタンを押下
「完了」ボタンを押下

Java プロジェクトフォルダ(   )を開きます
src フォルダを右クリック
新規->クラスを選択
「新規 Java クラス」画面が表示されます

名前:Con2Mysql
□「public static void main(String[] args)」にチェックをつける
□「コメントの生成」にチェックをつける
「完了」ボタンを押下


以下をもとに記述します。


```
import java.sql.*;
public class Con2Mysql {
   public static void main(String[] args) {
     String msg = "";
     try {
     // ドライバロード
     Class.forName("com.mysql.jdbc.Driver");
     
     // MySQL に接続
     Connection con = DriverManager.getConnection("jdbc:mysql://localhost/testdb", "root", "mysql");

     // ステートメント生成
     Statement stmt = con.createStatement();

     // SQL を実行
     String sqlStr = "SELECT * FROM test_table";
     ResultSet rs = stmt.executeQuery(sqlStr);

     // 結果行をループ 
     while(rs.next()){
       // レコードの値
       int id = rs.getInt("user_id");
       String name = rs.getString("user_name");

       //表示
       System.out.println(id + ":" + name);
       }

     // 接続を閉じる
     rs.close();
     stmt.close(); 
     con.close();
   }catch (ClassNotFoundException e){
     msg = "ドライバのロードに失敗しました"; 
     System.out.println(msg);
   }catch (Exception e){
     msg = "ドライバのロードに失敗しました";
     System.out.println(msg);
   } 
  }
}
```
プログラミングが終わったら、実行してみましょう。 

正常に実行されれば、以下のような表示がおこなわれます。

1:taro 
2:jiro 
3:hanako

失敗した場合には、エラーが表示されます。 
データベースやテーブルは正しく作成されているか?CLASSPATH やビルドバスは設定されているか? などを含めて確認

ドライバ・マネージャにて設定している接続文字列のフォーマットは下記の記述ルールとなっています。

```
"jdbc:mysql://HOSTNAME/DBNAME", "ID", "PASS"
例 : "jdbc:mysql://localhost/testdb", "user1", "pass4user1"
```

以上になります。

随時編集していきますので、何かございましたらお気軽にご教示いただけますと幸いでございます。


***
Java-データベース接続 / Java-MySQL接続
①[JDBCとJDBCドライバの概要](https://qiita.com/drafts/c08edca77306cadd3217)
②[JDBCドライバの取得方法（MySQL用）とデータ接続準備](https://qiita.com/drafts/7cbe6afd3c3486dcdab1)
③-1 [環境変数へCLASSPATHを設定する方法](https://qiita.com/drafts/4961ce6d5b12aff6c108)
③-2 [EclipseのビルドバスへCLASSPATHを設定する方法](https://qiita.com/drafts/f2b677770791f4611520)
④[JDBCドライバのロード](https://qiita.com/drafts/7f712392a910f2e9b993)
⑤[データベース（MySQL）に接続してテーブル情報を検索、また検索結果を表示](https://qiita.com/drafts/39dc456d6cd722270a17)  
***