OceanBaseデータベースは、MySQL公式JDBCドライバーを使用した接続に対応しています。本記事では、MySQL Connector/Jを使用してOceanBaseデータベースに接続し、使用する方法について説明します。
前提条件
コンピュータのJava 環境がJava JDK 8以上であることを確認してください。
MySQL Connector/Jをインストールし、実行環境を設定します。
MySQL Connector/J 5.1.47バージョンが推奨されます。ダウンロードおよびインストール方法の詳細については、Connector/J のダウンロードおよびConnector/J のインストールを参照してください。
Javaアプリケーションの作成
ステップ1:データベース接続文字列の取得
OceanBaseデータベースのデプロイ担当者または管理者から、該当するデータベース接続文字列を取得します。例:
obclient -h100.88.xx.xx -uroot@test -p****** -P2881 -Doceanbase
データベース接続文字列には、データベースへのアクセスに必要なパラメータ情報が含まれています。アプリケーションを作成する前に、データベース接続文字列を用いてデータベースへのログインを検証し、接続文字列のパラメータが正確であるか確認することができます。
パラメータの説明:
- -h:OceanBaseデータベースへの接続IPアドレス。ODP (OceanBase Database Proxy)のアドレスである場合もあります。
- -u:テナントの接続ユーザー名。書式はユーザー@テナント#クラスタ名となります。クラスタのデフォルトテナントは sys、テナントのデフォルト管理者ユーザーは root です。データベースへ直接接続する場合はクラスタ名を指定しませんが、ODP経由で接続する際は指定が必要です。
- -p:ユーザーのパスワードです。
- -P:OceanBaseデータベースの接続ポート番号であり、ODPのリスニングポートでもあります。
- -D:接続対象のデータベース名です。
ステップ2:アプリケーションの作成
以下は、Linux環境でJavaドライバー Connector/J 5.1.47を使用してデータベースに接続する例です。
MySQL Connector/J 5.1.47ドライバーを正しくインストールし、環境を設定した後、以下のTest.javaファイルのサンプルコードを使用してデータベースに接続し、使用することができます。
注意
MySQL Connector/J 8.xを使用する場合、Class.forName("com.mysql.jdbc.Driver")のcom.mysql.jdbc.Driverをcom.mysql.cj.jdbc.Driverに置き換える必要があります。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
try{
Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:2881/test?user=r***&password=");
System.out.println(connection.getAutoCommit());
Statement sm = connection.createStatement();
//t_meta_formを新規作成
sm.executeUpdate("CREATE TABLE t_meta_form (name varchar(36) , id int)");
//データを挿入
sm.executeUpdate("insert into t_meta_form values ('an','1')");
//データを照会し、結果を出力
ResultSet rs = sm.executeQuery("select * from t_meta_form");
while (rs.next()) {
String name = rs.getString("name");
String id = rs.getString("id");
System.out.println(name + ','+ id);
}
//テーブルを削除
sm.executeUpdate("drop table t_meta_form");
}catch(SQLException se){
System.out.println("error!");
se.printStackTrace() ;
}
}catch (Exception ex) {
ex.printStackTrace();
}
}
}
コード内のデータベース接続パラメータ、ご自身の環境に合わせて修正してください。以下の項目を参考に、「ステップ1」で取得したデータベース接続文字列の対応する値を設定します。
connection = DriverManager.getConnection("jdbc:mysql://{host}:{port}/{dbname}?user={username}&password={******}")
//例
jdbc:mysql://100.88.xx.xx:2881/test?user=r***&password=******`
host:
-hの値を使用します。OceanBaseデータベースへの接続IPアドレス。ODP (OceanBase Database Proxy)のアドレスである場合もあります。port:
-Pの値を使用します。OceanBaseデータベースの接続ポート番号であり、ODPのリスニングポートでもあります。dbname:
-Dの値を使用します。接続対象のデータベース名です。username:
-uの値を使用します。テナントの接続ユーザー名で、テナントの接続ユーザー名で、書式はユーザー@テナント#クラスタ名となります。クラスタのデフォルトテナントは'sys'、テナントのデフォルト管理者ユーザーは'root'です。データベースに直接接続する場合は、クラスタ名の部分は不要ですが、ODP経由で接続する場合は指定する必要があります。password:
-pの値を使用します。ユーザーのパスワードです。
ステップ3:アプリケーションの実行
コードの編集が完了したら、以下のコマンドでコンパイルします:
#一時的な環境変数の設定です。mysql-connector-java-5.1.47.jarが実際にインストールされているパスを記述してください。
export CLASSPATH=/usr/share/java/mysql-connector-java-5.1.47.jar:$CLASSPATH
#コンパイル
javac Test.java
コンパイル完了後、以下のコマンド使用して、Test を実行します:
java Test
#以下の結果が出力された場合は、データベースの接続に成功し、サンプル文が正しく実行されたことを意味します
true
an,1
詳細情報
OceanBaseデータベースのオープンソースコミュニティには、Javaサンプルアプリケーションの完全なサンプルも用意されています。詳細については、Java サンプルアプリケーションを参照してください。