Javaでデータベース連携---JDBCプログラム


今回はJavaを用いてデータベースと連携する方法について勉強したのでまとめてみました。
以下は記述なんですけど、間違っている場合は教えてください。

まずは基本知識について説明します。

## DBMS（データベース管理システム）
DBMS(database management system)とは、データをデータベースに管理するソフトウェアです。
##  SQL (Structured Query Language)
データベース内のデータを操作するには、DBMSに指示を出す必要があります。
そこでデータベース専用言語のSQLを使います。
SELECT文：レコードを検索
INSERT文：レコードを追加
UPDATE文：レコードを更新
DELETE文：レコードを削除

##  JDBCプログラム (Java Database Connectivity)
### 定義
JAVAプログラムでデータベースを利用するのは、プログラムからデータベースにSQL文を送信して、結果を取得します。
java.sqlパッケージに含まれているクラスやインタフェースで行います。
下表はjava.sqlパッケージの主なクラス・インタフェースです。
| クラス・インタフェース | 機能        | 
|:----------------------------|:---------------|
| Driver Manager          | DBMSへの接続準備を行う     | 
| Connection              | DBMSへの接続や切断を行う  | 
| PreparedStatement       | SQL文の送信を行う       |
| ResultSet                | DBMSから検索結果を受け取る| 
| SQLException            |データベースに関するエラー情報を提供する| 

また、データベースを操作するのに必要なクラスやインタフェース群の**JDBCパッケージ**が必須です。
JDBCパッケージはjava.sqlパッケージのクラスやインタフェースを介して間接的に使用します。

このように、java.sqlパッケージとJDBCドライバを使って、データベースを利用するプログラムを**JDBCプログラム**と呼びます。

### JDBCプログラムコード
#### 例文
```ruby:qiita.rb
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class SelectEmployess {
  public static void main(String[] args){
    //JDBCドライバを読み込む
    try {
      Class.forName("クラス名");
      
    }catch(ClassNotFoundException e){
      throw new IllegalStateException("JDBCドライバを読み込めませんでした");
    }
    
    //データベースに接続
    try(Connection conn = DriverManager.getConnection(“接続先DB”, “ユーザ名”, ”パスワード”)){
      //SELECT文を準備
      String sql = "SELECT文";
      PreparedStatement pStmt = conn.prepareStatement(sql); //SQLをDBに届けるPreparedStatementインスタンスを取得する
      // SELECT文を実行し、結果表ResultSetを取得
      ResultSet rs = pStmt.executeQuery(); // ResultSetインスタンスにSELECT文の結果が格納される
      //結果表に格納されたレコードの内容を表示
      while (rs.next()) {//結果表の取り出し対象レコードを一つ進める
    
      //取り出し対象レコードの各列の値を取得する
        String id = rs.getString("id");
        String name = rs.getString("name");
        int age = rs.getInt("age");
        
      //取得したデータを出力
        System.out.printIn(“ID:” + id);
        System.out.printIn(“NAME:” + name);
        System.out.printIn(“AGE:” + age);

        }
    }catch(SQLException e) {
      e.printStackTrace();//接続やSQL処理失敗時の処理
      
    }
 

}
```
#### 実例
```ruby:qiita.rb
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class SelectEmployess {
  public static void main(String[] args){
    //JDBCドライバを読み込む
    try {
      Class.forName("org.h2.Driver");
      
    }catch(ClassNotFoundException e){
      throw new IllegalStateException("JDBCドライバを読み込めませんでした");
    }
    
    //データベースに接続
    try(Connection conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/~/example
", "sa", "123")){
     //SELECT文を準備
      String sql = "SELECT id, name, age FROM employees";
      PreparedStatement pStmt = conn.prepareStatement(sql); //SQLをDBに届けるPreparedStatementインスタンスを取得する
      //SELECT文を実行し結果表ResultSetを取得
      ResultSet rs = pStmt.executeQuery(); // ResultSetインスタンスにSELECT文の結果が格納される
      //結果表に格納されたレコードの内容を表示
      while (rs.next()) {//結果表の取り出し対象レコードを一つ進める
      //取り出し対象レコードの各列の値を取得する
        String id = rs.getString("id");
        String name = rs.getString("name");
        int age = rs.getInt("age");
        
        //取得したデータを出力
        System.out.printIn("ID:" + id);
        System.out.printIn("NAME:" + name);
        System.out.printIn("AGE:" + age);

        }
    }catch(SQLException e) {
      e.printStackTrace();//接続やSQL処理失敗時の処理
      
    }
 

}
```