JDBC。IntelliJ IDEA でのデータベースの接続と Java コンソール アプリケーションの作成
導入
この記事では、 Java でのデータベース操作の基本と
SQL の概要に特化した短いシリーズを開始します。多くのプログラムは、情報の処理と変更、および情報を最新の状態に保つのに忙しいです。データはプログラム ロジックの非常に重要な部分であるため、多くの場合、データ用に別のストレージが割り当てられます。その中の情報は構造化されており、正しい処理と保存を保証するための特別なルールが適用されます。データは、特別なクエリ言語である SQL (Structured Query Language) を使用してアクセスおよび変更されます。
データベース管理システムは、 SQL を含む、さまざまな外部プログラムとデータおよび追加サービス (ロギング、リカバリ、バックアップなど) との対話を保証するソフトウェアです。つまり、データとデータを操作する外部プログラムとの間にあるソフトウェア層です。このパートでは、SQL とは何か、SQL サーバーとは何かについての質問に答え、DBMS と対話する最初のプログラムを作成します。
DBMSの種類
DBMS には、データ ストレージの編成方法に基づいていくつかの種類があります。
- 階層的。データはツリー構造で編成されます。例としては、ディスクのルートから始まり、さまざまな種類のファイルのブランチやさまざまなネストの度合いのフォルダーで成長するファイル システムがあります。
- 通信網。階層構造を変更したもので、各ノードは複数の親を持つことができます。
- オブジェクト指向。データは、OOP に従って、その属性と相互作用の原則を備えたクラス/オブジェクトの形式で編成されます。
- 関連した。このタイプの DBMS のデータはテーブルに編成されます。テーブルは相互にリンクでき、テーブル内の情報は構造化されます。
この一連の記事では、H2 を例として使用してリレーショナル DBMS (最も一般的な DBMS) を検討し、交換の動作と同様のものをエミュレートするアプリケーションを最初から作成します。
質問:なぜ PostgreSQL、MySQL、MSSQL、または Oracle を使用しないのですか?
回答:別のプログラムのセットをインストールするという問題に気を取られないようにするためです。さらに詳しい設定、データベースの作成、さまざまな OS やバージョンでの作業の複雑さ。H2 を使用するには、最小限のアクションを実行する必要があります。ただし、現在の H2 JDBC を別のメーカーのリレーショナル DBMS に変更することを妨げるものはありません (サーバー アドレス行とドライバー クラス名のみが変更されます)。
SQL
外部プログラムは、データ管理言語である構造化照会言語で DBMS への照会を生成します。SQL とは何ですか? 従来のプログラミング言語とどう違うのですか? SQL の特徴の 1 つは宣言性です。つまり、
SQL は宣言型言語です。これは、コマンドを入力するとき、つまり SQL サーバーへのクエリを作成するときに、どのような方法で取得するかではなく、正確に何を取得したいかを記述することを意味します。サーバーにリクエストを送信することで
SELECT * FROM CUSTOMER
(SQL からロシア語へのおおよその翻訳:
「COSTUMER テーブルから選択を行います。選択はテーブル内のすべての行で構成されます」 )、すべてのユーザーのデータを受け取ります。サーバーが関心のあるデータをどこからどのようにダウンロードして生成するかはまったく問題ではありません。重要なのは、リクエストを正しく作成することです。
- SQL Server とは何ですか?またどのように機能しますか? DBMS との対話は、クライアント/サーバーの原則に基づいて行われます。一部の外部プログラムは演算子や SQL 言語のコマンドの形式でリクエストを送信し、DBMS がそれを処理して応答を送信します。わかりやすくするために、SQL Server = DBMS であると仮定します。
1 つのブランドの車を運転できれば、他のブランドの車も問題なく運転できる可能性が高くなります。細かい点を除いて、運転の基本はどこでも同じです。異なるメーカーの SQL サーバーにも同じことが当てはまります。それぞれのサーバーには独自のバージョンの SQL がありますが、指定された標準 (SQL92、SQL2003 など) を満たしています。SQL92 フレームワーク内で演算子とコマンドを使用します。
基本的な SQL ステートメントは次のグループに分類されます。
- データ定義言語 ( DDL ) – データ定義。データベース構造とそのオブジェクトの作成。
- データ操作言語 ( DML ) – データとの実際の対話: 挿入、削除、変更、読み取り。
- トランザクション制御言語 ( TCL ) – トランザクション管理。
- データ制御言語( DCL ) – データおよびデータベース構造へのアクセス権の管理。
一連の記事では、特に DML に注目して、最初の 3 つのグループを見ていきます。
JDBC
前世紀の 80 年代には、PC XT/AT タイプのパーソナル コンピュータが市場を制覇しました。これは主に、設計のモジュール化によるものでした。これは、ユーザーが自分のコンピュータの 1 つまたは別のコンポーネント (プロセッサ、ビデオ カード、ディスクなど) を非常に簡単に変更できることを意味します。この素晴らしい特性は今日まで保たれています。ビデオ カードを変更し、ドライバーを更新します (場合によってはドライバー自体が自動的に更新されることもあります)。ほとんどの場合、このような操作によって悪いことは何も起こらず、既存のプログラムは再インストールせずに更新されたシステムでも引き続き動作します。DBMS を使用した Java での作業にも同じことが当てはまります。
SQL サーバーでの作業を標準化するために、単一ポイントであるJDBC (Java DataBase Connectivity)を通じて SQL サーバーとの対話を実行できます。これは、DBMS を操作するための
java.sqlパッケージの実装です。すべての一般的な SQL サーバーの製造元は、そのサーバー用の JDBC ドライバーをリリースしています。以下の図を考えてみましょう。アプリケーションは
java.sqlのクラスのインスタンスを使用します。次に、データを取得/変更するために必要なコマンドを渡します。次に、
java.sql はjdbc ドライバーを通じてDBMS と対話し、完成した結果を返します。
別のメーカーの DBMS に切り替えるには、多くの場合、JDBC を変更して基本的な設定を行うだけで十分です。プログラムの残りの部分は変更されません。
最初のプログラム
実践的な部分に移りましょう。
JetBrains IntelliJ IDEA IDEを使用して Java プロジェクトを作成しましょう。Ultimate Edition には、SQL とデータベースを操作するための素晴らしいツールである
Data Grid が含まれていることに注意してください。ただし、ほとんどのユーザーは有料です。
したがって、教育目的では、一般公開されているIntelliJ IDEA Community Editionのみを使用できます。それで:
- IDE を起動し、新しいプロジェクトを作成します。
- Java プロジェクトを選択し、SDKバージョンを指定します(例では JDK8 ですが、これは重要ではありません)。
- 次のステップでは、タイプとしてコンソール アプリケーションを選択します。
- プロジェクト名、パッケージ、およびディスク上の場所を示します(このために別のディレクトリを作成しました)。
- IDE を少し脇に置いて、H2 DBMSを操作するために必要なJDBC ファイルをwww.h2database.comからダウンロードしましょう(プラットフォームに依存しない ZIP をダウンロードします)。
- ダウンロードしたファイルの内部に入ります (パスh2\binにあるjar ファイルに興味があります。これは後で必要になるので、それをコピーします)。
- IDE に戻り、プロジェクトのルートにディレクトリdbを作成します。このディレクトリには、DBMS データを含むファイルが配置されます。 lib – JDBC JAR ライブラリは次のとおりです。
- 手順6の jar ファイルをlibディレクトリに移動し、ライブラリとしてプロジェクトに追加します。
- src/sql/demoにある Java ファイルの名前をStockExchange.javaに変更し(忘れた場合のために、単純な「交換」をエミュレートします)、その内容を変更して実行します。
これで、DBMS に接続したり、DBMS から切断したりできるようになります。各ステップはコンソールに反映されます。初めて DBMS に接続すると、データベース ファイル
StockExchange.mv.dbが作成されます。
コード解析
実際のコード:
package sql.demo;
import java.sql.*;
public class StockExchangeDB {
public static final String DB_URL = "jdbc:h2:/c:/JavaPrj/SQLDemo/db/stockExchange";
public static final String DB_Driver = "org.h2.Driver";
public static void main(String[] args) {
try {
Class.forName(DB_Driver);
Connection connection = DriverManager.getConnection(DB_URL);
System.out.println("Соединение с СУБД выполнено.");
connection.close();
System.out.println("Отключение от СУБД выполнено.");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("JDBC драйвер для СУБД не найден!");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Ошибка SQL !");
}
}
}
定数ブロック:
- DB_Driver : ここではドライバーの名前を定義しました。ドライバーの名前は、たとえば、接続されたライブラリをクリックし、現在のプロジェクトの lib ディレクトリでその構造を展開することによって見つけることができます。
- DB_URL : データベースのアドレス。コロンで区切られたデータで構成されます。
- プロトコル=jdbc
- ベンダー (メーカー/名前) DBMS=h2
- DBMS の場所。この場合はファイルへのパス (c:/JavaPrj/SQLDemo/db/stockExchange)。ネットワーク DBMS の場合は、リモート サーバーの名前または IP アドレス、TCP/UDP ポート番号などがここに追加で示されます。
エラー処理:
コード内でメソッドを呼び出すと、注意が必要なエラーが返される場合があります。この段階では、単にコンソールでレポートするだけです。DBMS を操作するときのエラーは、ほとんどの場合
SQLExceptionであることに注意してください。
動作ロジック:
- Class.forName (DB_Driver) – 対応する JDBC ドライバーが利用可能であることを確認します (以前にダウンロードしてインストールしました)。
- DriverManager.getConnection (DB_URL) – DBMS 接続を確立します。渡されたアドレスを使用して、JDBC 自体が DBMS のタイプと場所を特定し、データベースとの通信に使用できる Connection を返します。
- connection.close() – DBMS への接続を閉じ、プログラムの操作を終了します。
シリーズの次のパートでは、DDL 演算子と SQL データ型について学び、データベースの初期構造を作成してテーブルを埋め込みます。
第二部 第三部
GO TO FULL VERSION