ASとか

開発系の記事が多めです。タイトルのASはActionScriptの略です。

JavaからMySQLを操作するまで

はじめに

勉強がてらWindowsMySQLを設置してローカルネットワークで繋がっているMacからJavaでアクセスしようと思ったらはまりまくったのでメモ

バージョン

MySQL

参考

とりあえずテスト用データ作成

$ mysql -u root -p

# 権限を付与したユーザを作成
mysql> grant all privileges on *.* to 'user'@'%' identified by 'password';

# ログインし直してデータベース作成
mysql> exit;
$ mysql -u user -p
mysql> create database mydatabase;

# ログインし直してテーブル作成
mysql> exit;
$ mysql -u user -p mydatabase
mysql> create table mytable (id int auto_increment primary key, title varchar(256), body text, updated_at datetime);

# レコード作成して終了
mysql> insert into mytable values (null, 'title1', 'body1', current_timestamp);
mysql> exit;

Java

参考

ここまで出来たら実装

public static void main(String[] args) {
    Connection conn = null;
    try {
        conn = DriverManager.getConnection("jdbc:mysql://IPアドレス:ポート番号/mydatabase", "user", "password");
        java.sql.Statement stmt = conn.createStatement();
        String sql = "select id, title, body from mytable";
        ResultSet rs = stmt.executeQuery(sql);
        while (rs.next()) {
            System.out.println(rs.getString("title"));
            System.out.println(rs.getString("body"));
        }
        // このあたりはGCで解放されるがメモリ節約のためclose
        rs.close();
        stmt.close();
    } catch (SQLException e) {
        // TODO 自動生成された catch ブロック
        e.printStackTrace();
    } finally {
        try {
            if (null != conn) {
                conn.close();
            }
        } catch (SQLException e) {
            // TODO 自動生成された catch ブロック
            e.printStackTrace();
        }
    }
}

触るだけなんでこんなもんで

はまったところ

上記にある

  • ポート解放
  • Driverのクラスパス設定

をやってなかったです。

あと

ターミナルからsshMySQLに接続しようとしてるんだけど全然無理。これは後でやる。