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

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

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

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

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

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

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

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