Warning: Use of undefined constant WPLANG - assumed 'WPLANG' (this will throw an Error in a future version of PHP) in /home/expressweb/wcguru.net/public_html/wp-content/plugins/head-cleaner/head-cleaner.php on line 270
SQLite3へ接続する3つの方法
  1. TOP
  2. SQLite3へ接続する3つの方法

SQLite3へ接続する3つの方法

初めてのPHP
この記事は約 1 分で読めます。 1,802 Views

SQLite3 データベースは、インメモリ、テンポラリ、ファイル指定の3つの方法で接続することができます。

各接続方法の特徴と主な用途を表にしています。

特徴 用途
インメモリ メモリ上にsqlite3データベースを保持します。
非永続データベースです。
切断でデータベースは消失します。
超高速アクセスが必要
テンポラリ ファイルシステム上のテンポラリ領域にsqlite3データベースを保持します。
非永続データベースです。
切断でデータベースは消失します。
データベースファイル削除を管理したくない
ファイル sqlite3の一般的な使い方です。指定したパスにあるsqlite3データベースを接続、または新規作成+接続します。
永続データベースです。
切断してもデータベースは最後の状態で残ります。
データベースを使いたい

ここまで、インメモリ、テンポラリ、ファイルのSQLite3へ接続する3つの方法を説明してきました。
SQLite3へ接続する際、flagオプションを指定できます。インメモリ、テンポラリはこのオプションを指定しないでください。

ここからは、SQLite3ファイルへ接続するオプション、バリエーションをご紹介します。

SQLite3ファイルへ接続する際のオプション

SQLite3は以下のようにオプションを指定できます。
$sqlite3 = new SQLite3( $filename[, int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE [, string $encryption_key = null ]] ) ;

$filename:ファイル名(パス付きも可能)
指定したfilenameをSQLite3データベースとしてオープンします。

  • フルパス指定:new SQLite3(“/path-to-sqlite3/sqlite3.db”);
  • 相対パス指定:new SQLite3(“../../sqlite3.db”);
  • ファイル名のみの指定:new SQLite3(“sqlite3.db”);
$flag:接続オプション
3つのフラグを組み合わせて指定することができます。

  • SQLITE3_OPEN_READONLY: データベースを読み込み専用でオープンする
  • SQLITE3_OPEN_READWRITE: データベースを読み書き共用でオープンする
  • SQLITE3_OPEN_CREATE: データベースが存在しない場合は作成する

指定できる3つのパラーメータのバリエーションは以下のようになります。

  • 読み書きオープン、ファイルがない場合新規作成
    new SQLite3(“sqlite3.db”);
    new SQLite3(“sqlite3.db”,SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE);

  • 読み取り専用オープン、ファイルがなければエラー
    new SQLite3(“sqlite3.db”, SQLITE3_OPEN_READONLY);

  • 読み書きオープン、ファイルがなければエラー
    new SQLite3(“sqlite3.db”, SQLITE3_OPEN_READWRITE);

ファイルパスに書き込み権限がない、ファイルが存在しない(SQLITE3_OPEN_CREATE指定なし)では以下例外が発生します。
「Unable to open database: unable to open database file」

encryption_keyは通常使えません
通常暗号化対応していません。sqlite3をソースコードからコンパイルしてください。
公式の暗号化方法の他、オープンソース、サードパーティからも提供されています。

SQLite3のC/C++ APIはURIを使ってvfs、cache、nolock等のオプションを指定することができます。
PHP5.3以降は、sqlite3_open_v2を使って接続します。
(SQLITE_VERSION_NUMBER >= 3005000の場合)

オプションは、sqlite3_open_v2へ伝わりません。
例えば、new SQLite3(“sqlite3.db?mode=ro”)とリードオンリーパラメーターを指定すると
sqlite3.db?mode=roのファイル名でsqlite3データベースが新規作成されます。

PHPでは、URIを使った接続方法はできません。
また、PHPのSQLite3の実装(PDO、SQLite3)はVFSに対応していません。

\ SNSでシェアしよう! /

コピペで実践PHPの注目記事を受け取ろう

NO IMAGE

この記事が気に入ったら
いいね!しよう

コピペで実践PHPの人気記事をお届けします。

  • 気に入ったらブックマーク! このエントリーをはてなブックマークに追加
  • フォローしよう!

ライター紹介 ライター一覧

php

この人が書いた記事  記事一覧

  • 【PHP】PINGサーバーへURLを送信!インデックス登録を促進するサンプル

  • sqlite3で利用可能な型

  • SQLite3へ接続する3つの方法

  • PHPのソースコードの意味がわかる10選

関連記事

  • PHPのソースコードの意味がわかる10選

  • sqlite3で利用可能な型