LoginSignup
1
1

More than 5 years have passed since last update.

Javaでデータベースに繋ぐ(その1) たぶん基本のやりかた for MySQL/MariaDB

Posted at

「その1」からちょっとだけ書き換えればOK!

その1」だとDerbyを使うため、あまりメジャーとは言えません。
ということでMySQLだったらどうなるのでしょうか? ほとんど差はありません。

実際にコードを少しだけ書き換えてみます。
実行環境は、CentOS7でのMariaDB導入 簡易ガイドで作成しているHOGEDB(ユーザーhogeで接続)としています。

書き換えたのは2箇所だけ、わかるでしょうか?

/**
 * データベース接続のサンプル(その1: Statement方式) MySQL版
 * 
 * @author Sato Daisuke
 */

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Sample1forMySQL {
    public static void main(String[] args) throws SQLException {
        // (1) 接続用のURIを用意する(必要に応じて認証指示user/passwordを付ける)
        String uri = "jdbc:mysql://localhost/HOGEDB?user=hoge&password=hogehoge";

        // (2) DriverManagerクラスのメソッドで接続する
        Connection conn = DriverManager.getConnection(uri);

        // (3) SQL送信用インスタンスの作成
        Statement st = conn.createStatement();

        // (4) SQL送信
        st.executeUpdate("drop table if exists sample");
        st.executeUpdate("create table sample(id integer primary key)");
        Long start = System.currentTimeMillis();
        Long delta = start;

        // とりあえず5万回のループ
        for (int i = 0; i < 10000; i++) {
            st.executeUpdate("insert into sample values(" + i + ")");

            // スプリットの計算
            if (i % 1000 == 0) {
                Long now = System.currentTimeMillis();
                Long split = now - delta;
                System.out.println("" + i + ": " + split + "ms.");
                delta = now;
            }
        }
        Long end = System.currentTimeMillis();
        System.out.println("所要時間: " + (end - start) + "ms.");

        // (5) 後始末(インスタンスの正常クローズ)
        st.close();
        conn.close();
    }

}

書き換えた2ヶ所は、

  • DBの接続文字列(uri)をMySQL向けに変更してます
  • Derby版はメモリDBを使ったため、実行すると毎回初期化される仕組みになってますが、こちらはディスク上に入れてしまっているので、「もしあったら先にDROPする」コードをいれました(create table文の直前)。

実行の際の注意

当たり前ですが、MySQLのコネクターがないとエラーが出ます。
ダウンロードページから入手し、展開しておいてから、ライブラリー化しておくといいでしょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1