JDBCテクノロジー【JDBCの概要、データベース接続の取得、データベースドライバーのダウンロード】(1) - 徹底詳細解説(学習のまとめ---入門から深化まで)

 

目次

JDBCの概要

JDBCの作成手順 

 接続を取得する

 データベースドライバーをダウンロードする

データベース接続を取得する

 プロパティファイルの使用


JDBCの概要

データの永続性

永続性: メモリ内のデータを、永続的に保存できるストレージ デバイス (ディスクなど) に保存します。

永続性の主な用途は、リレーショナル データベースのメモリにデータを保存することですが、もちろんディスク ファイルや XML データ ファイルに保存することもできます。

 

 JDBCとは

1. JDBC (Java Database Connectivity) Java データベース接続

2. JavaEEプラットフォームにおける技術仕様です。

3. データベースに接続し、Java 言語で SQL ステートメントを実行するための標準 API を定義します。

4. さまざまなリレーショナルデータベースへの統合アクセスを提供できます。

データベースドライバーとは何ですか 

1. データベースドライバはデータベースを直接操作するプログラムです

2. データ製品ごとにデータベースドライバー名が異なります。

3. プログラムでは、データベースに対する操作を完了するためにデータベース ドライバーに依存する必要があります。

Java でのデータベース テクノロジへのアクセス

 1. JDBC標準に基づいたデータベースへのアクセス

 2. Hibernate、Mybatis などのサードパーティ ORM フレームワークを使用してデータベースにアクセスします。

プログラム動作データベース処理

JDBC がない場合、Java プログラムは次のようにデータベースにアクセスします。

 JDBC を使用すると、Java プログラムは次のようにデータベースにアクセスします。

 JBDC で一般的に使用されるクラスとインターフェイス

ドライバーインターフェース

Driver インターフェイスの役割は、データベース ドライバー オブジェクトが持つ必要があるいくつかの機能を定義することです。たとえば、データベースとの接続を確立するメソッドの定義です。このインターフェイスは、データベース メーカーに提供されています。Java 言語接続をサポートするすべてのデータベースは、このインターフェイスを実装しています。このインターフェイスを実装するクラスは、データベース ドライバー クラスと呼ばれます。

 DriverManager クラス

DriverManager はドライバー マネージャーであり、データベース ドライバーの管理を担当します。ドライバーを登録すると、DriverManagerの登録リストに保存されます。DriverManager は、インスタンス化されたデータベース ドライバー オブジェクトを通じて、アプリケーション プログラムとデータベース間の接続を確立できます。そして、Connection インターフェイス タイプのデータベース接続オブジェクトを返します。

getConnection(String jdbcUrl, String user, String passwd) このメソッドは、アクセス データベースの URL、ユーザー、およびパスワードを通じて、対応するデータベースの Connection オブジェクトを返します。JDBC URL は、データベースに接続するときに、指定されたデータベース識別子に接続するために使用されます。URL には、データベースのタイプ、アドレス、ポート、ライブラリ名などの情報が含まれます。ブランドごとにデータベースの接続 URL が異なります。

MySQL データベースに接続します。

Connection conn = DriverManager.getConnection
("jdbc:mysql://host:port/database", "user","password");

Oracle データベースに接続します。

Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@host:port:database","user", "password");

接続インターフェース

Connection はデータベースの接続 (セッション) オブジェクトです。データベース上のすべての操作はこの接続に基づいて実行され、このオブジェクトを通じて SQL ステートメントを実行し、結果を返すことができます。

一般的な方法

1. createStatement() は、SQL をデータベースに送信する Statement インターフェイス タイプのオブジェクトを作成します。

2. prepareStatement(sql) は、プリコンパイルされた SQL をデータベースに送信する PrepareSatement インターフェイス タイプのオブジェクトを作成します。

3. setAutoCommit(boolean autoCommit) トランザクションを自動的にコミットするかどうかを設定します。

4. commit() はリンク上のトランザクションをコミットします。

5. rollback() は、このリンク上のトランザクションをロールバックします。

 ステートメントインターフェイス

静的 SQL ステートメントを実行し、生成された結果を返すために使用されるオブジェクト。単純な SQL ステートメントを送信するために createStatement によって作成されます (動的バインディングはサポートされていません)。

一般的な方法

1.execute(String sql)はパラメータ内のSQLを実行し、結果セットがあるかどうかを返します。

2.executeQuery(String sql) は select ステートメントを実行し、ResultSet 結果セットを返します。

3.executeUpdate(String sql) は、挿入/更新/削除操作を実行し、更新された行の数を返します。

4. addBatch(String sql) 複数の SQL ステートメントをバッチに入れます。

5.executeBatch() は、実行のために SQL ステートメントのバッチをデータベースに送信します。

PreparedStatement インターフェイス

Statement インターフェイスから継承され、preparedStatement によって作成され、1 つ以上のパラメーターを含む SQL ステートメントを送信するために使用されます。PreparedStatement オブジェクトは Statement オブジェクトよりも効率的であり、動的なパラメータ バインディングを実装しているため、SQL インジェクションを防ぐことができるため、通常は PreparedStatement を使用します。 

 一般的な方法

1、addBatch()

現在の SQL ステートメントをバッチに追加します。

2、実行()

現在の SQL を実行し、ブール値を返します。

3、Update()を実行する

挿入/更新/削除操作を実行し、更新された行の数を返します。

4、executeQuery()

現在のクエリを実行し、結果セット オブジェクトを返します。

5、setDate(int パラメータインデックス, 日付 x)

java.sql.Date 値を現在の SQL ステートメント内の指定された位置にバインドします。

6、setDouble(intparameterIndex, double x)

double 値を現在の SQL ステートメント内の指定された位置にバインドします。

7、setFloat(intparameterIndex, float x)

現在の SQL ステートメント内の指定された位置に float 値をバインドします。

8、setInt(int パラメータインデックス, int x)

int 値を現在の SQL ステートメント内の指定された位置にバインドします。

9、setString(intparameterIndex, String x)

String 値を現在の SQL ステートメント内の指定された位置にバインドします。

 ResultSet インターフェース

ResultSet は、データベース クエリ操作によって取得された結果セットを一時的に格納するために使用されます。

一般的な方法

1、getString(int インデックス)、getString(String 列名)

データベース内の varchar や char などの型のデータ オブジェクトを取得します。

2、getFloat(int インデックス)、getFloat(String 列名)

データベース内の Float 型のデータ オブジェクトを取得します。

3、getDate(int インデックス)、getDate(String 列名)

データベース内の日付型データを取得します。

4、getBoolean(int インデックス)、getBoolean(String 列名)

データベース内のブール型のデータを取得します。

5、getObject(int インデックス)、getObject(String 列名)

データベース内のあらゆる種類のデータを取得します。

JDBCの作成手順 

 注: ODBC (Open Database Connectivity、Open Database Connectivity) は、Microsoft によって Windows プラットフォームで起動されます。ユーザーはプログラム内で ODBC API を呼び出すだけでよく、ODBC ドライバーはその呼び出しを特定のデータベースへの呼び出しリクエストに変換します。

 接続を取得する

 データベースドライバーをダウンロードする

MySQL :: MySQL Connector/J をダウンロード (アーカイブ バージョン)

データベース接続を取得する

/**
* 获取数据库连接测试类
*/
public class JdbcTest {
     public static void main(String[] args) throws ClassNotFoundException, SQLException
      {
        //连接Mysql数据库的URL
        String url = "jdbc:mysql://localhost:3306/itjdbc";
        //连接数据库的用户名
        String name = "root";
        //连接数据库的密码  
        String pwd01 = "";
        //通过反射实现数据库驱动的加载与注册
        Class.forName("com.mysql.jdbc.Driver");
        //通过DriverManager对象获取数据库的连接对象
        Connection connection = DriverManager.getConnection(url, name, pwd);
        System.out.println(connection);
     }
}

com.mysql.jdbc.Driver クラス情報がロードされると、静的ブロック内のコードが実行されます。静的ブロックでは、データベース ドライバーは自身をインスタンス化し、DriverManager の registerDriver メソッドを通じて DriverManager ドライバー マネージャーに自身を登録します。

 プロパティファイルの使用

 プロパティファイルの紹介

接尾辞プロパティが付いているファイルがプロパティ ファイルです。このファイルには、コンテンツが key=value 形式で保存されます。Java のプロパティ ツール クラスを使用して、このファイルを読み取ることができます。一部の構成情報はプロジェクトのプロパティ ファイルに格納されるため、プロパティ ファイルは構成ファイルとしてよく使用されます。

 プロパティツールクラス

Properties ツール クラスは java.util パッケージにあり、ツール クラスは Hashtable から継承します。タイプ .properties の構成ファイルは、プロパティ ツール クラスを通じて読み取ることができます。

 プロパティ ツール クラスの一般的なメソッド

load(InputStream is) はプロパティ ファイルを読み取り、指定された入力ストリーム オブジェクトを通じて解析します。

getProperty(String key) キーに従って対応する値を取得します

注: プロパティ ファイルに中国語が含まれている場合は、アイデアを設定する必要があります。

 

 プロパティファイル

#我是中国人
key1=ITBZ
key2=BJSXT
key3=我是中国人

プロパティファイルの操作

/**
* 读取properties配置文件的测试类
*/
public class PropertiesTest {
    public static void main(String[] args) throws IOException {
        //实例化Properties对象
        Properties prop = new Properties();
        //获取读取properties文件的输入流对象
        InputStream is = PropertiesTest.class.getClassLoader().getResourceAsStream("test.properties");
       //通过给定的输入流对象读取properties文件并解析。
        prop.load(is);
        //获取properties文件中的内容
        String value1 =prop.getProperty("key1");
        String value2 =prop.getProperty("key2");
        String value3 =prop.getProperty("key3");
        System.out.println(value1+""+value2+" "+value3);
   }
}

データベース接続へのアクセスの最適化

データベースへの接続に必要な情報をプロパティ ファイルに保存すると、ハード コーディングの問題を解決できます。

 プロパティファイルの内容

#连接Mysql数据库的URL
url=jdbc:mysql://localhost:3306/itjdbc
#连接数据库的用户名
username=root
#连接数据库的密码
pwd= XXXX
#数据库驱动名称
driver=com.mysql.jdbc.Driver

接続を取得する

/**
* 优化获取数据库连接
*/
public class JdbcTest2 {
    public static void main(String[] args) throws IOException, ClassNotFoundException,
SQLException {
        //实例化Properties对象
        Properties prop = new Properties();
        //获取读取properties文件的字节输入流对象
        InputStream is = JdbcTest2.class.getClassLoader().getResourceAsStream("jdbc.properties");
        //读取properties文件并解析
        prop.load(is);
        //获取连接数据库的url
        String url = prop.getProperty("url");
        //获取连接数据库的用户名
        String name = prop.getProperty("username");
        //获取连接数据库的密码
        String pwd = prop.getProperty("pwd");
        //获取数据库驱动全名
        String drivername = prop.getProperty("driver");
        //加载并注册驱动
        Class.forName(drivername);
        //通过驱动管理器对象获取连接对象
        Connection connection = DriverManager.getConnection(url, name, pwd);
        System.out.println(connection);
   }
}

おすすめ

転載: blog.csdn.net/m0_58719994/article/details/131648625