本記事では、MySQL Connector/Jドライバーを使用してOB Cloudデータベースに接続し、操作する方法について説明します。
前提条件
- OB Cloudデータベースアカウントに登録し、クラスタインスタンスとOB Cloud MySQLテナントを作成していること。詳細については、クラスタインスタンスの作成およびテナントの作成をご参照ください。
- IntelliJ IDEAをダウンロードしてインストール済みであること。
- JDK 1.8.0をダウンロード済みであること。
- Mavenをダウンロードし、IntelliJ IDEAで設定済みであること。
- 本記事で使用されているプロジェクトサンプルコードをダウンロード済みであること。
説明
OceanBaseの使用経験に基づき、以下のMySQL Connector/Jバージョンを推奨します:
- MySQL Connector/J 5.x系では、5.1.40から5.1.49のバージョンを推奨します。
- MySQL Connector/J 8.x系では、8.0.7から8.0.25および8.2.0から8.4.0のバージョンを推奨します。
インストール後の確認
JDKが正常にインストールされているか確認します。
java -versionMavenが正常にインストールされているか確認します。
mvn -version(オプション)IntelliJ IDEAのMaven設定が正しいか確認します。
説明
本記事は、参考用の簡単なサンプルプロジェクトを提供するものです。より複雑なサンプルの開発を試みる場合は、開発環境に適したバージョンのMavenをダウンロードし、以下の手順でIntelliJ IDEAに設定できます。
IntelliJ IDEAを開き、メニューバーからIntelliJ IDEA > Preferences > Build, Execution, Development > Build Tools > Mavenを選択します。
Maven home pathに、Mavenインストールパッケージのパスを設定します。

操作手順
ステップ1:OB Cloudデータベース接続文字列を取得する
OB Cloudコンソールにログインします。クラスターリストページで、対象クラスターの情報を展開し、対象テナントで 接続 をクリックします。

ポップアップウィンドウで パブリックネットワークを使用 を選択します。
パブリックIPアドレスを使用してデータベースに接続 ページで以下の設定を完了し、接続文字列を生成します:
パラメータ説明IPアドレスの追加 追加 をクリックし、エグジットIPをホワイトリストに追加します。 証書をダウンロード (オプション)証書をダウンロード をクリックし、CA証書をダウンロードして認証を完了します。 テナントへの接続 データベース ドロップダウンボックスをクリックした後、+ データベースを作成 をクリックし、プロンプトに従ってデータベースの作成を完了します。 アカウント ドロップダウンボックスをクリックした後、+ アカウントを作成 をクリックし、プロンプトに従ってアカウントの作成を完了します。 接続方式 接続方式として MySQL CLI を選択します。 注意
アカウント作成後、作成時に生成されたパスワードを適切に保管してください。
ステップ2:サンプルプロジェクトを実行する
ダウンロードしたサンプルプロジェクトを解凍し、IntelliJ IDEAで開きます。
説明
このサンプルプロジェクトでは、デフォルトでMySQL Connector/J 5.xが使用されています。MySQL Connector/J 8.xを使用する場合は、サンプルプロジェクトを以下のように修正する必要があります:
JDBCtest.javaファイル内のClass.forName("com.mysql.jdbc.Driver");をClass.forName("com.mysql.cj.jdbc.Driver");に置き換えます。- MySQL Connector/J 8.xが8.0.31以下の場合、
pom.xmlファイル内の依存関係versionを8.0.27に更新します。MySQL Connector/J 8.xが8.1以上の場合、groupIdをcom.mysqlに、artifactIdをmysql-connector-jに、versionを8.0.33に更新します。MySQL Connector/J 8.xが8.0.31と8.1の間の場合、上記の2つの依存関係をどちらも使用できます。
ステップ1で取得した接続文字列情報に基づいて、プロジェクトコード内の以下のデータベース接続パラメータを修正します。
Connection connection = DriverManager.getConnection("jdbc:mysql://{host}:{port}/{dbname}?user={username}&password={******}");- host:接続文字列の
-hパラメータから取得した、OceanBase Cloudのデータベース接続アドレスです。 - port:接続文字列の
-Pパラメータから取得した、OceanBase Cloudのデータベース接続ポートです。 - dbname:接続文字列の
-Dパラメータから取得した、アクセスするデータベース名です。 - username:接続文字列の
-uパラメータから取得した、アカウント名です。 - password:接続文字列の
-pパラメータから取得した、アカウントのパスワードです。
//例 Connection connection = DriverManager.getConnection("jdbc:mysql://t5******.aws-ap-southeast-1.oceanbase.cloud:3306/integrations-test?user=test&password=******");注意
MySQL Connector/J 8.xを使用する場合、アカウントのパスワードに
#を含めないでください。含めると、サンプルプロジェクトの実行時にエラーが発生します。- host:接続文字列の
IntelliJ IDEAでサンプルプロジェクトを実行します。以下の結果が返された場合、データベースへの接続に成功し、サンプルプロジェクトが正しく実行されたことを意味します。

プロジェクトコードについて
本記事で使用されているサンプルプロジェクト JDBCDemo のディレクトリ構造は以下のとおりです:
JDBCDemo
├── src
│ └── main
│ └── java
│ └── JDBCTest.java
└── pom.xml
ファイルの説明:
src:ソースコードのルートディレクトリです。main:アプリケーションの主要なロジックを含むメインコードディレクトリです。java:Javaソースコードディレクトリです。JDBCTest.java:メインクラス。テーブルの作成やデータの挿入などのロジックが含まれます。pom.xml:プロジェクトの依存関係とビルド設定を管理するために使用されるMavenプロジェクトの設定ファイルです。
pom.xmlコードの紹介
pom.xml ファイルはMavenプロジェクトの設定ファイルであり、プロジェクトの依存関係、プラグイン、ビルドルールなどの情報を定義しています。MavenはJavaプロジェクト管理ツールで、依存関係のダウンロード、プロジェクトのコンパイル、パッケージ化などの操作を自動化できます。
本記事の pom.xml ファイルのコードは、主に以下の部分で構成されています:
ファイル宣言ステートメント。
このファイルがXMLファイルであり、使用するXMLバージョンが
1.0、文字エンコーディング方式がUTF-8であることを宣言します。コード:
<?xml version="1.0" encoding="UTF-8"?>POMの名前空間とPOMモデルバージョンの設定。
xmlnsを使用して、POMの名前空間をhttp://maven.apache.org/POM/4.0.0。` と指定します。xmlns:xsiを使用して、XML名前空間をhttp://www.w3.org/2001/XMLSchema-instance。` と指定します。xsi:schemaLocationを使用して、POMの名前空間をhttp://maven.apache.org/POM/4.0.0``、POMのXSDファイルの場所をhttp://maven.apache.org/xsd/maven-4.0.0.xsd。と指定します。<modelVersion>要素を使用して、このPOMファイルで使用するPOMモデルバージョンを4.0.0と指定します。
コード:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- その他の設定 --> </project>基本情報の設定。
<groupId>を使用して、プロジェクトが属する組織をcom.exampleと指定します。<artifactId>を使用して、プロジェクトの名前をJDBCDemoと指定します。<version>を使用して、プロジェクトのバージョン番号を1.0-SNAPSHOTと指定します。
コード:
<groupId>org.example</groupId> <artifactId>JDBCDemo</artifactId> <version>1.0-SNAPSHOT</version>プロジェクトが依存するコンポーネントの設定。
- データベースとのやり取りを行うために、
mysql-connector-java依存ライブラリを追加します: <groupId>を使用して、依存関係が属する組織をmysqlと指定します。<artifactId>を使用して、依存関係の名前をmysql-connector-javaと指定します。<version>を使用して、依存関係のバージョン番号を5.1.40と指定します。
**コード:** ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version> </dependency> ```説明
このセクションのコードは、プロジェクトが依存するコンポーネントとしてMySQL Connector/JのV5.1.40バージョンを定義しています。他のバージョンの情報については、MySQL Connector/Jをご参照ください。
- データベースとのやり取りを行うために、
JDBCTest.java コードの紹介
JDBCTest.java ファイルはサンプルプログラムの一部であり、MySQL Connector/Jを使用してデータベース操作を実行する方法を示すコードです。まずデータベース接続情報を設定し、次に JDBCTest オブジェクトを作成してデータベース操作を実行します。コードには、テーブルの作成、データの挿入、データのクエリの例も含まれています。
本記事の JDBCTest.java ファイルのコードは、主に以下の部分で構成されています:
JavaプログラムでJDBC APIを使用するために必要なJavaクラスをインポートします。
- Connectionはデータベースとの接続を確立するために使用されます。
- DriverManagerはJDBCドライバのセットを管理します。
- ResultSetはSQLクエリが返すデータを処理するために使用されます。
- Statementは静的SQLステートメントを実行し、結果を返すために使用されます。
コード:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;JDBCTestクラスを作成し、mainメソッドを定義します。- プログラムのエントリポイントとして、
JDBCTestという名前のpublicクラスを定義します。クラス名はファイル名と一致させる必要があります。 - プログラムの実行開始点として、public staticメソッド
mainを定義します。 - その他のデータベース操作。
コード:
public class JDBCTest { public static void main(String[] args) { // データベース接続情報 // データソースの作成 // テーブルの作成 // データの挿入 // データの更新 // データの削除 // データのクエリ // テーブルの削除 } }- プログラムのエントリポイントとして、
データベース接続情報を定義します。
Class.forName()を使用してMySQL JDBCドライバをロードし、登録します。DriverManager.getConnection()メソッドで、データベース接続用のURL、ユーザー名、パスワードを定義します。{host}、{port}、{dbname}、{username}、passwordを実際のデータベース接続情報に置き換える必要があります。
コード:
Class.forName("com.mysql.jdbc.Driver"); //mysql-jdbc 5 //Class.forName("com.mysql.cj.jdbc.Driver"); //mysql-jdbc 8 Connection connection = DriverManager.getConnection("jdbc:mysql://{host}:{port}/{dbname}?user={username}&password={******}");SQLステートメントを作成して実行します。
Statement stmt = connection.createStatement(); stmt.execute("...");テーブルを作成します。
コード:
// SQLステートメントを使用して、"test" という名前のテーブルが存在する場合は削除します stmt.execute("drop table if exists test"); // "test" という名前の新しいテーブルを作成します。整数型の "id" と文字列型の "name" の2つのフィールドを含みます stmt.execute("create table test (id int, name varchar(25))"); // テーブル作成成功のメッセージを出力します System.out.println("create table successfully");データを挿入します。
コード:
// "test" テーブルに2行のデータを挿入します stmt.execute("insert into test values (1, 'aaa'),(2, 'bbb')"); // データ挿入成功のメッセージを出力します System.out.println("insert data successfully");データをクエリします。
コード:
// データクエリのメッセージを出力します System.out.println("query data : "); // クエリSQLステートメントを実行し、"test" テーブルのすべてのデータを取得します ResultSet rs = stmt.executeQuery("select * from test"); // 結果セットを走査します while (rs.next()) { // 各データの "id" と "name" フィールドを出力します System.out.println(rs.getString("id") + "\t" + rs.getString("name"));データを更新します。
コード:
// "test" テーブルのidが1のレコードの"name"フィールドを'bbb'に更新する stmt.execute("update test set name = 'bbb' where id = 1"); // データ更新成功のメッセージを出力する System.out.println("update data successfully");データを削除します。
コード:
// "test" テーブルを削除する stmt.execute("drop table test"); // 結果セット、ステートメント、データベース接続を閉じる rs.close(); stmt.close(); connection.close();例外処理を行います。
上記のデータベース操作を実行する過程で例外が発生した場合、それらの例外はキャッチされ、エラーメッセージとスタックトレースの詳細が出力されます。
コード:
} catch (Exception e) { System.out.println("error!"); e.printStackTrace(); }
全コード表示
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>JDBCDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.mysql</groupId>-->
<!-- <artifactId>mysql-connector-j</artifactId>-->
<!-- <version>8.0.33</version>-->
<!-- </dependency>-->
</dependencies>
</project>
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCTest {
public static void main(String[] args) {
try {
//load driver
Class.forName("com.mysql.jdbc.Driver"); //mysql-jdbc 5
// Class.forName("com.mysql.cj.jdbc.Driver"); //mysql-jdbc 8
//create connection
Connection connection = DriverManager.getConnection("jdbc:mysql://{host}:{port}/{dbname}?user={username}&password={******}");
System.out.println("jdbc version : " + connection.getMetaData().getDriverVersion());
Statement stmt = connection.createStatement();
//create table
stmt.execute("drop table if exists test");
stmt.execute("create table test (id int, name varchar(25))");
System.out.println("create table successfully");
//insert data
stmt.execute("insert into test values (1, 'aaa'),(2, 'bbb')");
System.out.println("insert data successfully");
//query data
System.out.println("query data : ");
ResultSet rs = stmt.executeQuery("select * from test");
while (rs.next()) {
System.out.println(rs.getString("id") + "\t" + rs.getString("name"));
}
//update data
stmt.execute("update test set name = 'bbb' where id = 1");
System.out.println("update data successfully");
//query data after update
System.out.println("query data after update : ");
rs = stmt.executeQuery("select * from test");
while (rs.next()) {
System.out.println(rs.getString("id") + "\t" + rs.getString("name"));
}
//delete data
stmt.execute("delete from test where id = 1");
System.out.println("delete data successfully");
//query data after delete
System.out.println("query data after delete : ");
rs = stmt.executeQuery("select * from test");
while (rs.next()) {
System.out.println(rs.getString("id") + "\t" + rs.getString("name"));
}
//drop table
stmt.execute("drop table test");
//close
rs.close();
stmt.close();
connection.close();
} catch (Exception e) {
System.out.println("error!");
e.printStackTrace();
}
}
}
詳細を見る
Javaサンプルアプリケーションの作成については、OceanBaseデータベースのオープンソースコミュニティにも関連する完全なサンプルがあります。詳細については、Javaサンプルアプリケーションをご参照ください。
MySQL Connector/Jサンプルプロジェクトをダウンロード