MySQLに各言語から接続する方法

2013/07/19

いろいろな言語からMySQLへ接続する方法

概要

当記事では、各言語からMySQLに接続する方法を紹介します。
MySQLは主にWeb言語で使用されるデーターベースです。

今回はWeb言語でも有名な、PHP・Java・Perl・Rubyの4つの言語でMySQLへ接続してみます。
各言語で記述の仕方は多少ことなりますが、基本的な処理は同じです。

1. MySQLに接続してコネクションを生成
2. SQLクエリの実行
3. MySQLへの接続を遮断してコネクションを破棄

すべての言語で上記のような流れになっているので簡単ですね。

はじめに、MySQLでテーブルを作成

それではMySQLアカウント、データベース、テーブルを作成します。
今回は以下のように設定します。

MySQL アカウント名 : user
MySQL パスワード : pass
データベース名 : work
テーブル名 : accounts
ホスト : localhost

初めにデータベースを作成します。
MySQLに接続して以下のコマンドを実行します。
※[mysql>]はコマンドではありません。


mysql> CREATE DATABASE work;

次にアカウントを作成します。
workのデータベースに対して全ての権限を許可しています。


mysql> GRANT ALL PRIVILEGES ON work.* TO user@localhost IDENTIFIED BY "pass";
mysql> FLUSH PRIVILEGES;

つぎに簡単な構造のaccountsテーブルを作成します。


mysql> CREATE  TABLE IF NOT EXISTS `accounts` (
    ->   `id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
    ->   `username` VARCHAR(32) NOT NULL ,
    ->   PRIMARY KEY (`id`));

以上で、MySQLアカウント、データベース、テーブルが作成できました。
次は各言語で接続してみます。

各言語からMySQLへ接続

PHPからMySQLへ接続

まずは、一番使われているPHP言語からMySQLへ接続してみます。
接続方法はいろいろあるのですが、今回はPDOを使用した接続を紹介します。

PDOとは、MySQLやPostgreSQL、SQLiteなど様々なDBに接続するためのPEARモジュールです。

サンプルコード


$dsn = 'mysql:dbname=work;host=localhost';
$user = 'user';
$pass = 'pass';

try{
    $dbh = new PDO($dsn, $user, $pass);

    $sql = 'select * from accounts';
    foreach ($dbh->query($sql) as $row) {
        print($row['id']);
        print($row['username'] . "<br />");
    }
}catch (PDOException $e){
    print('Error:'.$e->getMessage());
    die();
}

JavaからMySQLへ接続

JavaからJDBCを用いてMySQLに接続するために、MySQL Connector/Jをインストールします。
MySQL Connector/Jは、こちらからダウンロードできます。

ダウンロードしたファイルを解凍して設置し、以下のようにして読み込みます。

import java.sql.*;

これで準備が整いましたので、MySQLへ接続します。

サンプルコード


try {
    //ドライバクラスをロード
    Class.forName("com.mysql.jdbc.Driver");

    String url = "jdbc:mysql://localhost/work";
    String user="user";
    String pass ="pass";
    Connection con = DriverManager.getConnection(url,user,pass);
    Statement stmt = con.createStatement();

    String sql = "select * from accounts";
    ResultSet rs = stmt.executeQuery(sql);

    while(rs.next()){
        int id = rs.getInt("id");
        String name = rs.getString("username");

        System.out.println(id + ":" + name);
    }

    // 切断
    rs.close();
    con.close();
} catch (Exception e) {
    e.printStackTrace();
}

RubyからMySQLへ接続

RubyはRailsによりヒットした言語です。
RubyでMySQLに接続するためにアダプタをインストールします。

# gem install mysql

では、MySQLに接続します。

サンプルコード


require 'mysql'

begin
    db = Mysql::connect('localhost', 'user', 'pass', 'work')
    sql = 'select * from accounts'
    rs = db.query sql

    rs.each { |colmuns|
        puts colmuns.join("\t")
    }
rescue Mysql::Error => e
    puts e.error
ensure
    rs.free if rs
    db.close if db
end

PerlからMySQLへ接続

PerlでMySQLに接続するには、DBIモジュールをuseします。

サンプルコード


use DBI;

$db = 'DBI:mysql:work:localhost';
$user = 'user';
$pass = 'pass

$dbh = DBI->connect($db, $user, $pass);

$sth = $dbh->prepare("select * from accounts");
$sth->execute;

# 出力
print "Content-type: text/html\n\n";
while( @row = $sth->fetchrow_array ){
	print "@row\n";
}

# 切断
$sth->finish;
$dbh->disconnect;
  • このエントリーをはてなブックマークに追加
Related

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...

rbenv環境でRuby on Railsのアプリケーションを一瞬で自動生成

アプリケーション構築時に最初に行う手順 概要 アプリケーションを作成するまでの手順を記載しています。 rbenvなどの環境が設定済と仮定して話を進めま...

Rails devise・authority・rolifyで権限付きの認証機能

devise・authority・rolify 概要 3つのGemを使用して、権限付き認証機能を実装します。 gem インストール Gemfile ...

Rails devise で複数モデルの認証機能を実装

Rails devise で複数モデルを管理 概要 rails のログイン認証 Gem「devise」のインストール・設定方法を紹介します。 よく「d...
トップへ戻る