0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Java Silver確実合格を目指すカレンダーAdvent Calendar 2024

Day 19

【おまけ】JDBCについて

Last updated at Posted at 2024-12-18

JDBCとは

JDBCとはJavaからリレーショナル・データベースに接続するための標準インタフェース(API)のことを言う。JavaからDBに接続をする・SQL文を実行する・トランザクションを実行するといったことができる。

JDBCのイメージ

JDBCはJava API、JDBCドライバマネージャー、JDBC DriverAPI、JDBCドライバーが構成要素。

JDBC API

Javaアプリケーションとデータベースのやり取りを行うための標準的なインターフェースで、SQLクエリの実行や、結果セットの取得などを行う。JDBC APIを使用することで、アプリケーション開発者はデータベースの種類に依存しないコードを書くことができる。

JDBCドライバマネージャー

JDBC APIと各データベースのドライバの仲介役。JavaアプリケーションがどのJDBCドライバを使用するかを管理し、適切なドライバに接続を振り分ける。

JDBCドライバ

特定のデータベースに接続する。各データベースベンダーが提供しており、データベース固有の通信プロトコルを使用して接続を確立・管理する。

動作イメージ

Javaアプリケーションがデータベースにアクセスする際、以下の順序で各構成要素が関与する。

  1. JavaアプリケーションがJDBC APIを通じてデータベース接続やクエリ実行を要求する
  2. JDBC APIは、この要求をDriverManagerに渡す
  3. JDBCドライバマネージャーは、ロードされた適切なJDBCドライバを選択する
  4. 選択されたJDBCドライバが、実際のデータベースとの通信を行う

メソッド紹介

getConnection()

DB接続用のメソッド。

con = DriverManager.getConnection(url,user,parrword)

URLの例
jdbc:mysql://localhost:3306/flmとは何か

createStatement()

ステートメント作成用のメソッド。ステートメントとはJavaアプリケーションからデータベースにSQLクエリを送信し、その結果を取得するためのJDBC APIの一部。

stmt = con.createStatement()

executeQuery()

クエリを実行してデータを取得するメソッド。

res = stmt.executeQuery(sql)

executeUpdate()

クエリを実行してデータを更新するメソッド。

int deleteCount = stmt.executeUpdate(sql)

ResultSetインタフェース

データベースの結果セットを表すデータの表で、通常、データベースに照会する文を実行することによって生成される。

イメージとしては以下。nextメソッドで参照するデータの列を次に移動させることができる。

image.png

getxxx()

ResultSetから値を取り出すことができる。取り出し方は以下の2通り。
XXXにはデータ型(IntやStringなど)が入る。

列番号で取り出し

getXXX(index)

列名で取り出し

getXXX(colName)

列番号が可変になる場合もあるので、列名で取り出す方がおすすめ。

close()

接続をクローズするメソッド。

con.close()

preparedStatement()

プリペアードステートメント作成用のメソッド。SQL文中にパラメータプレースホルダー(?)を使用して動的な値を指定することができる。

stmt = con.preparedStatement("SELECT NAME from EMPLOYEE WHERE ID = ?")

ステートメントとプリペアードステートメントの違いは以下。

特長 Statement PreparedStatement
SQLクエリの実行方法 毎回SQL文を解析・コンパイル 最初に1回だけ解析・コンパイル
パラメータの使用 直接文字列に埋め込む ? を使用して動的パラメータを設定
SQLインジェクション対策 リスクが高い 安全
パフォーマンス 毎回コンパイルするため効率が悪い 一度コンパイルされるため効率が良い

setXXX

プレースホルダーに値をセットする。XXXにはデータ型(IntやStringなど)が入る。
第一引数に何番目のプレースホルダーか,第二引数にプレースホルダーに入れる値をセットする。

stmt.setInt(1,922104)

トランザクション

トランザクションとは、データベースにおける一連の操作をひとまとめにして、すべて成功するか、またはすべて失敗するかを保証する仕組み。トランザクションに関するメソッドは以下。

自動コミットモードの解除

con.setAutoCommit(false)

トランザクションの確定

con.commit()

トランザクション取り消し

cno.rollback()
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?