今回は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プログラムコード
例文
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処理失敗時の処理
}
}
実例
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処理失敗時の処理
}
}