当記事では、各言語からMySQLに接続する方法を紹介します。
MySQLは主にWeb言語で使用されるデーターベースです。
今回はWeb言語でも有名な、PHP・Java・Perl・Rubyの4つの言語でMySQLへ接続してみます。
各言語で記述の仕方は多少ことなりますが、基本的な処理は同じです。
1. MySQLに接続してコネクションを生成
2. SQLクエリの実行
3. 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アカウント、データベース、テーブルが作成できました。
次は各言語で接続してみます。
まずは、一番使われている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から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は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に接続するには、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;