当記事ã§ã¯ã€å„言語ã‹ã‚‰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;