MySQLデータベース---JavaJDBCプログラミング

JavaでのJDBCプログラミング

1.データベースプログラミングの前提条件

  • プログラミング言語: Java、C、C ++、Pythonなど。
  • データベース: Oracle、MySQL、SQLServerなど。
  • データベースドライバパッケージ:データベースが異なれば、プログラミング言語ごとに異なるデータベースドライバパッケージが提供されます。
    たとえば、MySQLは、JavaベースでMySQLを操作するために必要なJavaドライバパッケージmysql-connector-javaを提供します。同様に、Javaに基づいてOracleデータベースを操作するには、Oracleのデータベースドライバパッケージojdbcが必要です。

2.MySQLドライバーパッケージのインストール

  1. 最初のブラウザ検索https://mvnrepository.com

  2. 入力ボックスでmysqljdbcを検索します
    ここに画像の説明を挿入

  3. 以下でこれを見つけてクリックしてください
    ここに画像の説明を挿入

  4. mysqlのバージョンに対応するドライバーを選択します
    ここに画像の説明を挿入

  5. クリックしてダウンロードを選択
    ここに画像の説明を挿入

3.アイデアにおけるドライバーパッケージの展開

  1. まず、アイデアプロジェクトでディレクトリを作成し、jarパッケージをそのディレクトリにコピーします
    ここに画像の説明を挿入
    ここに画像の説明を挿入
    ここに画像の説明を挿入

  2. 左上隅の[ファイル]->[プロジェクト構造]でアイデアを開きます…
    ここに画像の説明を挿入

  3. Librarires->+->Javaをクリックします
    ここに画像の説明を挿入

  4. 次に、libsディレクトリを選択し、OKまで進みます。
    ここに画像の説明を挿入

4. Javaでのデータベースプログラミング:JDBC

データベースには多くの種類があるため、異なるデータベースが提供するAPI(アプリケーションプログラミングインターフェイス)は同じではありません。Javaでこの問題を解決するために、JDBCが導入されています。

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

さまざまな種類のAPIを、さまざまなデータベースドライバーを介してJDBCスタイルの統合APIに変換します

Javaでは、このようなドライバーはスタンドアロンですjar包

JDBCの利点:

  1. Java言語アクセスデータベースの操作は、完全に抽象インターフェイスプログラミングを対象としています
  2. データベースアプリケーションの開発は、特定のデータベースベンダーのAPIに限定されません。
  3. プログラムの移植性が大幅に向上

5. JDBC API

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

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

6.1データベース接続接続

接続インターフェイス実装クラスはデータベースによって提供されます。通常、Connectionオブジェクトを取得するには、2つの方法があります
。1つは、DriverManager(ドライバー管理クラス)の静的メソッドを介して取得する方法です。

// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
Connection connection = DriverManager.getConnection(url);

1つは、DataSource(データソース)オブジェクトを介して取得されます。実際のアプリケーションでは、DataSourceオブジェクトが使用されます。

DataSource ds = new MysqlDataSource();
((MysqlDataSource) ds).setUrl("jdbc:mysql://localhost:3306/test");
((MysqlDataSource) ds).setUser("root");
((MysqlDataSource) ds).setPassword("root");
Connection connection = ds.getConnection();

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

  1. DriverManagerクラスによって取得された接続接続は再利用できません。使用後にリソースが解放されるたびに、connection.close()物理接続が閉じられます。
  2. DataSourceは、接続プールのサポートを提供します。接続プールが初期化されると、一定数のデータベース接続が作成されます。これらの接続は再利用できます。データベース接続が使用されるたびに、リソースを解放するための呼び出しによりconnection.close()、Conncetion接続オブジェクトがリサイクルされます。

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

Statementオブジェクトは、主にSQLステートメントをデータベースに送信します。JDBC APIは、主に3種類のStatementオブジェクト(Statement、PreparedStatement、CallableStatement)を提供します。
ここに画像の説明を挿入
SQLを実行する主な方法は2つあります。

  • executeQuery()selectメソッドが実行されると、通常はステートメントで使用される単一の結果セットが返されます。
  • executeUpdate()メソッドの戻り値は、影響を受ける行の数を示す整数であり、通常はupdate、 insert、 deleteステートメントで使用されます

6.3ResultSetオブジェクト

結果セットと呼ばれるResultSetオブジェクトは、SQLステートメントの条件を満たすすべての行を表し、一連のgetXXXメソッドを介してこれらの行のデータへのアクセスを提供します。

ResultSet内のデータは行ごとに配置され、各行には複数のフィールドがあり、レコードポインターがあります。ポインターが指すデータ行は現在のデータ行と呼ばれ、現在のデータ行のみを操作できます。特定のレコードを取得する場合は、メソッドを使用する必要がありますResultSet。ResultSetnext()内のすべてのレコードを取得する場合は、whileループを使用する必要があります。

7.JDBCの使用に関する注意

  1. URLの使用
    ここに画像の説明を挿入
  2. プレースホルダー?
    ここに画像の説明を挿入
  3. データベースに接続されていますConnection
    ここに画像の説明を挿入
  4. リソースを解放するシーケンスを閉じます
    ここに画像の説明を挿入
  5. ResultSetオブジェクトのトラバーサル
    ここに画像の説明を挿入

8.JDBCで使用される特定の操作

8.1対応するJDBCの挿入の使用

手順:

  1. DateSourceオブジェクトを作成します(URLユーザーパスワードの3つの側面を構成します)
  2. データベース接続への接続を確立します(SQLExceptionを処理します)
  3. SQLステートメントをアセンブルし、PrepareStatementオブジェクトを使用します
  4. アセンブリが完了したら、SQLステートメントを実行します
  5. 実行後、関連リソースを閉じて解放します(作成後に解放します)

コード例:

import com.mysql.cj.jdbc.MysqlDataSource;

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

public class InsertJDBC {
    
    
    public static void main(String[] args) throws SQLException {
    
    
        // 1. 创建 DataSource 对象
        DataSource dataSource = new MysqlDataSource();
        // 需要针对dataSource 进行一些配置,以便后面能够顺利的访问到数据库服务器
        // 主要配置三方面信息: URL,User,Password 需要进行向下转型
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java20220310?characterEncoding=utf-8&useSSL=true&serverTimezone=UTC");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("0000");

        // 2. 和数据库建立连接
        // 建立连接是为了验证当前网络通信是否正常
        // 如果不正常就会抛出 SQLException 异常
        // connection 对象生命周期应该是较短的.每个请求创建一个新的 connection.
        Connection connection = dataSource.getConnection();

        // 3. 拼装 SQL 语句,用到 PrepareStatement 对象
        String sql = "insert into student values(1,'曹操')";
        PreparedStatement statement = connection.prepareStatement(sql);
        System.out.println(" statement : "+statement);

        // 4. 拼装完成之后,可以执行 SQL 了
        // insert delete update 都使用 executeUpdate 方法来执行
        // select 就使用 executeQuery 来执行
        // 返回值表示此次操作修改了多少行
        int ret = statement.executeUpdate();
        System.out.println(" ret : "+ret);

        // 5. 执行完毕后,关闭释放相关资源
        // 一定是后创建的先释放
        statement.close();
        connection.close();
    }
}

8.2対応するJDBCの使用を削除する

手順:

  1. DataSourceオブジェクトを作成します(情報の3つの側面も構成します)
  2. データベース接続の作成接続
  3. SQLステートメントをアセンブルし、PrepareStatementオブジェクトを使用します
  4. アセンブリが完了したら、SQLステートメントを実行します
  5. 実行後、関連リソースを閉じて解放します(作成後に解放します)

コード:


import com.mysql.cj.jdbc.MysqlDataSource;

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

public class DeleteJDBC {
    
    
    public static void main(String[] args) throws SQLException {
    
    
    	// 1. 创建 DataSource 对象
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java20220310?characterEncoding=utf-8&useSSL=true&serverTimezone=UTC");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("0000");
		// 2. 创建数据库连接Connection
        Connection connection = dataSource.getConnection();
		// 3. 拼装 SQL 语句,用到 PrepareStatement 对象
        String sql = "delete from student where name = ?";
        System.out.println("请输入要删除的学生姓名: ");
        Scanner sc = new Scanner(System.in);
        String name = sc.nextLine();
		// 4. 拼装完成后,执行 SQL 语句
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name);

        int ret = statement.executeUpdate();

        if(ret == 0) System.out.println("删除失败");
        else System.out.println("删除成功");
		// 5. 关闭释放资源
        statement.close();
        connection.close();
    }
}

8.3対応するJDBCの使用を変更する

手順:

  1. DataSourceオブジェクトを作成します(情報の3つの側面も構成します)
  2. データベース接続の作成接続
  3. SQLステートメントをアセンブルし、PrepareStatementオブジェクトを使用します
  4. アセンブリが完了したら、SQLステートメントを実行します
  5. 実行後、関連リソースを閉じて解放します(作成後に解放します)

コード:

import com.mysql.cj.jdbc.MysqlDataSource;

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

public class UpdateJDBC {
    
    
    public static void main(String[] args) throws SQLException {
    
    
    	// 1. 创建 DataSource 对象
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java20220310?characterEncoding=utf-8&useSSL=true&serverTimezone=UTC");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("0000");
		// 2. 连接数据库
        Connection connection = dataSource.getConnection();
		// 3. 拼接 SQL语句
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改的学生id: ");
        int id = sc.nextInt();
        System.out.println("请输入要修改的学生姓名: ");
        String name = sc.next();
        String sql = "update student set name = ? where id = ?";
        // 4. 执行 SQL 语句
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name);
        statement.setInt(2,id);

        int ret = statement.executeUpdate();
        if(ret == 1) System.out.println("修改成功");
        else System.out.println("修改失败");
		// 5. 关闭释放资源
        statement.close();
        connection.close();
    }
}

8.4対応するJDBCの使用法を見つける

手順:

  1. DataSourceオブジェクトを作成します(情報の3つの側面も処理します)
  2. Connectionオブジェクトを作成し、データベースとの接続を確立します
  3. SQLステートメントをPrepareStatementでスプライスする
  4. SQLステートメントを実行する
  5. 結果セットを反復処理します
  6. リリースリソースを閉じる

コード:

import com.mysql.cj.jdbc.MysqlDataSource;

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

public class SelectJDBC {
    
    
    public static void main(String[] args) throws SQLException {
    
    
        // 1. 创建 DataSource 对象
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java20220310?characterEncoding=utf-8&useSSL=true&serverTimezone=UTC");
        ((MysqlDataSource) dataSource).setUser("root");
        ((MysqlDataSource) dataSource).setPassword("0000");
        // 2. 创建 Connection 对象,和数据库建立连接
        Connection connection = dataSource.getConnection();
        // 3. 借助 PrepareStatement 拼接 SQL 语句
        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);
        // 4. 执行 SQL 语句
        ResultSet resultSet = statement.executeQuery();
        // 5. 遍历结果集.
        while (resultSet.next()){
    
    
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            System.out.println("id: "+id+"name: "+name);
        }
        // 6. 关闭释放资源
        resultSet.close();
        statement.close();
        connection.close();
    }
}

おすすめ

転載: blog.csdn.net/wwzzzzzzzzzzzzz/article/details/123418831