2006/06/23

MySQL/ruby

どうもサーバの関係で個人的にもRailsを使う機会がなくなっている<%= fn 'FastCGI化できないので動作が速くなくて作成意欲減退。といってもそれなりのサーバを借りる必要性も感じてないし。' %>ので、最近はRailsを使わずにrubyでCGIとして動かすアプリを書いたりしている。
ポータビリティと規模の関係でファイルで十分なケースが多いのだけど、ちょっと複雑な事をするのにファイルだとIOに関して責任を持つのが重荷に。というか、相当単純な事以外ファイル使う気にならない。
で、DBに逃げているんだけど、rubyのMysqlバインディングを作ったとみたさんの日記がかなりありがたい。
セキュアなプログラミングを読んでMySQL周りの模範的な使い方を学習。
基本的には以下の様にすればいいみたい。

require 'mysql'
my = Mysql.init()
my.options(Mysql::SET_CHARSET_NAME, "utf8")
my.real_connect("localhost", nil, nil, "dbname")
st = my.prepare("SELECT c1, c2, c3 FROM tablename WHERE id > ? ORDER BY id ASC")
st.execute(2)

MySQL/Rubyを使って、プリペアドステートメントを使うと。
たどり着いた目的はMYSQL_SET_CHARSET_NAMEの指定方法が知りたかったんだけどね。