Java での JDBC プログラミング - Mysql データベースへの接続

目次

1. Java データベース プログラミング: JDBC

2. JDBC の動作原理

3.JDBCの使用

4. JDBC の使用手順の概要

 5. JDBC の共通インターフェイスとクラス

5.1 JDBC API

5.2 データベース接続 接続

5.3 ステートメントオブジェクト

5.4 ResultSet オブジェクト


1. Java データベース プログラミング: JDBC

     JDBC、Java データベース接続、Java データベース接続。 SQL文を実行するためのJava APIであり、Javaにおけるデータベース接続仕様です。この API は、java.sql.*、javax.sql.* パッケージ内のいくつかのクラスとインターフェイスで構成されており、Java 開発者がデータベースを操作するための標準 API を提供し、複数のリレーショナル データベースへの統合アクセスを提供できます。​    

2. JDBC動作原理

        JDBC は、さまざまなリレーショナル データベースに統合されたアクセス メソッドを提供し、特定のベンダーのデータベース アクセス API の高レベルの抽象化として、主にいくつかの共通インターフェイス クラスを含んでいます。
 
JDBC アクセス データベース階層:
 
03ec87ca8ed1468ba894a0b4ef601426.png
 
JDBC の利点:
 
  • Java 言語アクセス データベース操作は完全に抽象インターフェイス プログラミングを指向しています
  • データベース アプリケーションの開発は、特定のデータベース ベンダーの API に限定される必要はありません。
  • プログラムの移植性が大幅に向上

三、 JDBC使用

  • データベース ドライバー パッケージを準備し、プロジェクトの依存関係に追加します。

       プロジェクト内にフォルダー lib を作成し、依存関係パッケージ mysql-connector-java-5.1.47.jar を lib にコピーします。次に、jar パッケージをこのプロジェクトの依存関係に設定します。プロジェクトを右クリックし、「モジュール設定」を開き、「モジュール」でプロジェクトをクリックし、依存関係を設定し、+、JARS またはディレクトリをクリックして依存関係に lib フォルダーを設定し、フォルダーを示します。以下の jar パッケージは依存関係として導入されます。

  •  データベース接続を確立する

    MySQL データ接続の URL パラメータ形式は次のとおりです。
jdbc:mysql://サーバー アドレス:ポート/データベース名?パラメータ名=パラメータ値

// 加载JDBC驱动程序:反射,这样调用初始化com.mysql.jdbc.Driver类,即将该类加载到JVM方法
区,并执行该类的静态方法块、静态属性。
Class.forName("com.mysql.jdbc.Driver");

// 创建数据库连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?
user=root&password=root&useUnicode=true&characterEncoding=UTF-8");
  • 運用コマンド(ステートメント)の作成
//3.构造一个Sql
 String sql =" insert into stu(id,name,age) values(1,zhang,3)";

//需要把 Sql语句转化为对象
 PreparedStatement statement = connection.prepareStatement(sql);
  • アクションコマンドを使用してSQLを実行する
// 查询操作
preparedStatement.executeQuery();

// 新增、修改、删除操作
preparedStatement.executeUpdate();
  • 結果セットResultSetを処理します。
    //接受结果集合         
     ResultSet resultSet = statement.executeQuery();
        //结果集遍历
        while (resultSet.next()){
            //移动光标
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            int age = resultSet.getInt("age");
            System.out.println(id+" "+name+" "+age+" ");
        }
  • リソースをリリースする
try {
    if(resultSet != null){
        resultSet.close();
   }
    if(preparedStatement != null){
        preparedStatement.close();
   }
    if(connection != null){
        connection.close();
   }
} catch (SQLException e) {
    e.printStackTrace();
    throw new RuntimeException("数据库错误");
}

4. JDBC 使用手順の概要

1. データベース接続の作成
2. 運用コマンド文の作成
3. 運用コマンドを使用してSQLを実行する
4. 結果セット ResultSet を処理します。
5. リソースを解放する

 五. JDBC常用接口和类

5.1 JDBC API

        Java JDBC プログラミングでは、データベース操作は JDK 独自の API を使用して均一に処理されます。通常、この API は特定のデータベースのドライバー クラスから完全に切り離されています。したがって、Java JDBC API (java.sql パッケージの下にあります) をマスターすると、Java データベース プログラミングをマスターできます。

5.2 数据库连接Connection

Connection インターフェイス実装クラスはデータベースによって提供されます。Connection オブジェクトを取得するには、通常、次の 2 つの方法があります。
  • 1 つは、DriverManager (ドライバー管理クラス) の静的メソッドを通じて取得する方法です。
    // 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
Connection connection = DriverManager.getConnection(url);
  • 1 つは、DataSource (データ ソース) オブジェクトを通じて取得する方法です。 実際のアプリケーションで使用されますデータソースオブジェクト
 DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://localhost:3306/db1?serverTimezone=UTC");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("123456");

上記 2 つの方法の違いは次のとおりです。

   1. DriverManager クラスで取得した Connection は再利用できず、使用後にリソースが解放されるたびに connection.close() によって物理コネクションが切断されます。

   2. DataSource は接続プールのサポートを提供します。接続プールは、初期化中に特定の数のデータベース接続を作成します。これらの接続は再利用できます。データベース接続が使用され、リソースが解放されるたびに、connection.close() を呼び出すと、Conncetion 接続オブジェクトがリサイクルされます。

 

5.3 Statement对象

Statement オブジェクトは主に SQL ステートメントをデータベースに送信します。 JDBC API で提供される Statement オブジェクトには主に 3 つのタイプがあります。

 4aec17b72233456a91d6b358f0a6fc8e.png

SQL を実行するには主に 2 つの方法があります。
  • executeQuery() メソッドは、実行後に単一の結果セットを返します。通常、select ステートメントで使用されます。
  • executeUpdate() メソッドの戻り値は、影響を受ける行の数を示す整数で、通常は更新、挿入、および削除ステートメントに使用されます。

5.4 ResultSet对象

        ResultSet オブジェクトは結果セットと呼ばれ、SQL ステートメントの条件を満たすすべての行を表し、一連の getXXX メソッドを通じてこれらの行のデータへのアクセスを提供します。
        ResultSet 内のデータは行ごとに配置されます。各行には複数のフィールドとレコード ポインタがあります。ポインタが指すデータ行は現在のデータ行と呼ばれます。操作できるのは現在のデータ行のみです。特定のレコードを取得したい場合は ResultSet の next() メソッドを使用し、ResultSet 内のすべてのレコードを取得したい場合は while ループを使用する必要があります。

6. サンプルコード 

import com.mysql.cj.jdbc.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class TestJDBC {
    public static void main(String[] args) throws SQLException {
        // MysqlDataSource dataSource = new MysqlDataSource();
        //dataSource.setUrl();
        //1. 创建数据源,即获取数据库的位置
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://localhost:3306/db1?serverTimezone=UTC");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("123456");

        // 2 .和数据库服务器建立连接
        Connection connection = dataSource.getConnection();

        //3.构造一个Sql
        String sql =" insert into stu(id,name,age) values(?,?,?)";
      //  String sql =" insert into stu(id,name,age) values(1,zhang,3)";
        //需要把 Sql语句转化为对象
        PreparedStatement statement = connection.prepareStatement(sql);

        statement.setInt(1,66);
        statement.setString(2,"a");
        statement.setInt(3,7);
        //4.构造好的sql 发送给服务器;
       int n = statement.executeUpdate();
        System.out.println("n:"+ n);

        //5.最后一步 释放资源
        statement.close();
        connection.close();
    }
}

 結論:これで JDBC 関連の共有は終了です。皆さんの学習に役立つことを願っています。ご質問や異なる意見がございましたら、お気軽に残してください。コメントエリアにメッセージを残してください、ganxiezhich~~~

 

 

おすすめ

転載: blog.csdn.net/qq_61576108/article/details/134417809