SQLite
仕事でSQLiteを使う場面が出てきた。
勿論、本番環境ではなくて開発環境で軽く動作検証するのに使うだけではあるのだが。
というか
「SQLiteって何?」
というのが正直なところ。
調べたところ下記の様なものを指すらしい。
SQLite
SQLite(エスキューライト、エスキューエライト)は、パブリックドメインの軽量な関係データベース管理システム (RDBMS) である。
概要
サーバとしてではなくアプリケーションに組み込んで利用される軽量のデータベースである。 一般的なRDBMSに比べて大規模な仕事には不向きだが、中小規模ならば速度に遜色はない。 また、APIは単純にライブラリを呼び出すだけであり、データの保存に単一のファイルのみを使用することが特徴である。バージョン3.3.8からは全文検索のFTS1モジュールがサポートされた。その後 FTS2 - FTS3 と強化を続けバージョン3.7.4からはFTS4モジュールがサポートされている。
ふむふむ。
DBサーバーを立てなくてもファイルで簡易的にRDBMSを利用できる様にしてくれる物らしい。
これは便利かも。
で、PDOを使ってみると・・・
<?php $dbh = new PDO("sqllite:hogedb"); ?>
パスも合っているし、php.iniの設定も確認したが
下記のslqite関連のdllは読み込んでくれているようだ。
extension=php_pdo_sqlite.dll extension=php_sqlite3.dll
phpinfoメソッドも読んで動作を確認した。
phpinfo();
動いているように見える。
だのに何故か実行すると・・・
could not find driver
のエラーが吐き出されるばかり(-_-;
何故だ何がいけない(@o@)
ケアレスミス
色々とやっている中で、気が付いた・・・
sqllite・・・
SQL LITEになってる(`_`)
Lが2個になっている・・・。
綴りを「sqlite」に直すと・・・
<?php $dbh = new PDO("sqlite:hogedb"); ?>
動いたーーーー!!!!
単純ミスでお恥ずかしや(^O^;
- 作者: 西沢直木
- 出版社/メーカー: 翔泳社
- 発売日: 2009/05/19
- メディア: 大型本
- 購入: 2人 クリック: 99回
- この商品を含むブログ (15件) を見る
追記
SQLiteってカラムに型を持ってないの!?
DateTime型のカラムに「NOW()」ってクエリで指定したら怒られた(>_<)
SQLiteにはデータ型がないので、日付を扱うときには注意が要ります。
あと、SQLiteで現在の時刻を取得する場合
select datetime('now');
と実行するのですが、現在の時刻からマイナス9時間された値が返ってきます。
ロケールがうまくあっていないようなので、これを使って時刻を表示する場合は、以下のように実行して、9時間プラスします。
select datetime('now' ,'+09:00:00');
追記2
そういえば、SQLiteってユーザー名とパスワードがいらないんですね~。
SQLiteへの接続
PDOでSQLiteへ接続するには以下のようなDSNを指定し、PDOオブジェクトのインスタンスを生成します。
$dsn = 'sqlite:c:\test\sqlite.db';
$db = new PDO($dsn);
上記のように第一引数に指定するDSNは、
「sqlite:DBフルパス」
という表記で記載します。
SQLiteにはユーザやパスワードの設定がないので、PDOオブジェクトを生成する際には、
第二、第三引数は必要ありません。
PDO接続(SQLite,MySQL) | PHP入門~bituse~