Java データベース接続

SQL の基本を理解していることになります。これはいい。しかし、今日はさらに気分が良くなります。今日は、Java アプリケーションからデータベースを操作する方法を学び始めます。

さまざまな DBMS が多数あるため、Java の作成者は、Java アプリケーションがデータベースと連携する方法を標準化することにしました。そして彼らはこれを標準 - JDBC : Java DataBase Connectivityと呼びました。

JDBC には 3 つの主要なインターフェイスがあります。

  • 接続- データベースへの接続を担当します
  • ステートメント- データベースのクエリを担当します
  • ResultSet - データベースへのクエリの結果を担当します。

実際、それだけです。そして、すべてのインターフェースのすべてのメソッドを学ぶことさえできません。実用的な例のみですが、徐々に複雑にしていきます。

JDBC はサーブレットの操作に似ています。JDBC の作成者はいくつかのインターフェイスを作成し、それを誇らしげに Java DataBase API と呼んでいます。そして、これらのインターフェイスの実装は、DBMS の作成者に割り当てられました。それがそこでどのように実装されるか - 誰も気にしません。正常に動作します。

JDBC には 4 つのバージョンがあり、ここでは最新のバージョンを見ていきます。それは彼女が最もクールだからではなく、彼女が最も単純だからです。

JDBCドライバーマネージャー

Java アプリケーションとデータベースは、JDBC ドライバーと呼ばれるライブラリを通じて相互に通信します。これは、特定の DBMS 用の JDBC API を実装するクラスのセットです。

DriverManagerというクラスを使用して、正しい JDBC ドライバーが選択されます。それらの相互作用は次のように表すことができます。

重要なのは、In-Memory-DB、No-SQL-DB、さらには Android アプリに組み込まれたデータベースを使用できるということです。Java 開発者にとって、これらの微妙な違いはまったく関係ありません。Driver Manager は適切な JDBC ドライバーを選択し、すべてが時計のように動作します。

ところで、彼はどうやってやるのでしょうか?

MySQLサーバーへの接続

MySQL Workbench を介してローカル SQL サーバーに接続するために必要なものを覚えていますか? 忘れてしまった場合は、次の 3 つのものが必要だったことを思い出させます。

  • ホスト
  • ログイン
  • パスワード

ログインとパスワードがあればすべてが明らかです。覚えていると思いますが、ホストはサーバーが配置されているコンピューターの名前です。ローカル コンピューター上にある場合は、ホスト名として localhost を指定する必要があります。地元じゃなかったらどうするの?

次に、 ... URL を使用する必要があります。URL はUniversal Resource Locatorの略です。これは、サイト、プリンター、SQL サーバーなど、ネットワーク上のあらゆる場所の指定に使用できます。実際、この URL はローカル SQL サーバーにアクセスするためにも使用されます。次のようになります。

mysql://localhost:3306/db_scheme
  • mysqlはサーバープロトコルです
  • localhost - ネットワーク上のホスト名
  • 3306 - リクエストが行われるポート
  • db_scheme - スキーマ名 (データベース名)

ノート。データベース名は省略可能です。ただし、サーバーに多数のデータベース スキーマが保存されている場合は、通常、異なるユーザーとそれらに対して異なるアクセス権が作成されます。また、SQL サーバーにログインするユーザーがすべてのデータベースにアクセスできない場合は、アクセスできる特定のデータベースの名前を必ず指定する必要があります。

この URL の末尾には、確立される新しいデータベース接続のパラメータとみなされる、さまざまなパラメータ、エンコード タイプ、タイムゾーンを含めることができます。

また、プロトコルは複合的なものにすることもできます。データベース サーバーとのすべての通信が SSH プロトコルを使用した暗号化チャネル経由で行われる場合、URL は次のように指定できます。

ssh:mysql://localhost:3306/db_scheme

プロトコルは必ずしも外部プログラムである必要はありません。たとえば、JNDI プロトコルを使用してサーバーを操作している場合は、次のように指定できます。

jndi:mysql://localhost:3306/db_scheme

JDBC API プロトコルを使用して作業する場合は、次のように記述する必要があります。

jdbc:mysql://localhost:3306/db_scheme

データベース接続を作成しようとすると、JDBC ドライバー マネージャーは SQL-db-URL を解析し、プロトコル名から JDBC ドライバー名を決定します。そんなちょっとした裏技をご紹介します。