MariaDB Connector/J で MariaDB 10.4 に接続する

自分用の備忘録として、Windows 10 上で [MariaDB Connector/J](https://mariadb.com/kb/en/mariadb/about-mariadb-connector-j/) (JDBC) 2.5.2 経由で MariaDB 10.4 に接続する手順を以下に記します。

# Java 8 のインストール
[Java SE Development Kit 8 Downloads](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) から jdk-8u221-windows-x64.exe をダウンロード、インストール

# Eclipseのインストール
[eclipse公式](https://eclipse.org/) から eclipse-inst-win64.exe をダウンロード、インストール

# MariaDB Connector/J
[MariaDB Connector/J](https://mariadb.com/kb/en/mariadb/about-mariadb-connector-j/) から[mariadb-java-client-2.5.2.jar](https://downloads.mariadb.com/Connectors/java/connector-java-2.5.2/mariadb-java-client-2.5.2.jar) をダウンロード、C:\Program Files\Java\jdk1.8.0_221\lib にコピーします。

# Eclipse : project作成
ここでは test というプロジェクトを作成しました。
<img width="370" alt="newProject.png" src="https://qiita-image-store.s3.amazonaws.com/0/122952/ca6f9a59-34c8-3c3a-1e8e-062d77544c57.png">

<img width="424" alt="newJavaProject.png" src="https://qiita-image-store.s3.amazonaws.com/0/122952/865a4ce7-a1cb-30cc-7f42-bca50ae1e8b8.png">

# Eclipse : class作成
<img width="425" alt="new java class.png" src="https://qiita-image-store.s3.amazonaws.com/0/122952/2974cedc-a761-7879-23a1-11100019a31b.png">

# mariadb-java-client-2.5.2.jar を external archive として追加

<img width="413" alt="addJar.png" src="https://qiita-image-store.s3.amazonaws.com/0/122952/f63346f5-9755-4382-aca2-4f84b18ddffd.png">

![image.png](https://qiita-image-store.s3.amazonaws.com/0/122952/e11223f9-8bc6-980f-f048-e4e46ffce614.png)


# サンプルコードのコンパイル/実行

```java

import java.sql.*;
import org.mariadb.jdbc.internal.util.constant.Version;

public class test_jdbc {
    public static void main(String[] args) {

        Connection conn = null;
        Statement stmt = null;
        try {
            Class.forName("org.mariadb.jdbc.Driver");
            
            System.out.println("Connector/J " + Version.version + "\n");

            System.out.print("Connecting to DB...");
            conn = DriverManager.getConnection(
                "jdbc:mariadb://192.168.2.104/mysql", "root", "password");
            System.out.println(" done.");

            stmt = conn.createStatement();
            String sql = "SELECT user,host FROM mysql.user";
            ResultSet hrs = stmt.executeQuery(sql);

            while (hrs.next()) {
                String user = hrs.getString(1);
                String host = hrs.getString(2);
                System.out.println("User: " + user + "@'" + host + "'");
            }
        } catch (SQLException se) {
            //Handle errors for JDBC
            se.printStackTrace();
        } catch (Exception e) {
            //Handle errors for Class.forName
            e.printStackTrace();
        } finally {
            //finally block used to close resources
            try {
                if (stmt != null) {
                    conn.close();
                }
            } catch (SQLException se) {} // do nothing
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException se) {
                se.printStackTrace();
            } //end finally try
        } //end try
        System.out.println("\nGoodbye!");
    }
}
```

実行結果が以下のようになれば問題ありません。

```
Connector/J 2.5.2

Connecting to DB... done.
User: mysql@'localhost'
User: root@'localhost'

Goodbye!
```