SSブログ

SQLiteデータベース更新 [SQLite]

SQLiteのデータベース更新ですが、以下のSQL発行APIとSQLを覚えるだけです。

resource sqlite_query ( resource $dbhandle , string $query )   
 dbhandle  SQLite データベースリソース。手続きに従って、 sqlite_open() から返されます。 このパラメータは、 オブジェクト指向言語型メソッドを使用する場合は不要です。   
 query 実行するクエリ。
クエリ内のデータは 適切にエスケープ する必要があります。  
 返り値この関数は結果ハンドルを返します。失敗した場合に FALSE を返します。 レコードを返すクエリの場合、結果ハンドルは sqlite_fetch_array()sqlite_seek() のような関数で使用することができます。クエリの型によらず、この関数はクエリが失敗した場合にFALSE を返し ます。  

SQLもさほど難しくはありません。梅酒データベースで実際に使用したSQL文です。

●レコード追加
 $query = "INSERT INTO Umesyu (title,desc,maker,materials,alcMax,alcMin,capacity,price,other1,other2,other3)VALUES(
'".$title."','".$desc."','".$maker."',
'".$materials."','".$alcMax."','".$alcMin."',
'".$capacity."','".$price."','".$smell."',
'".$sweet."','".$after."','".$other1."',
'".$other2."','".$other3."')";

●レコード削除
 $query = "DELETE FROM Umesyu WHERE id = ".$id;

●レコード更新
 $query = "UPDATE Umesyu SET title='".$Umesyu->title."',
desc='".$Umesyu->desc."',
maker='".$Umesyu->maker."',
materials='".$Umesyu->materials."',
alcMax='".$Umesyu->alcMax."',
alcMin='".$Umesyu->alcMin."',
capacity='".$Umesyu->capacity."',
price='".$Umesyu->price."',
smell='".$Umesyu->smell."',
sweet='".$Umesyu->sweet."',
after='".$Umesyu->after."',
other1='".$Umesyu->other1."',
other2='".$Umesyu->other2."',
other3='".$Umesyu->other3."' WHERE id = ".$Umesyu->id;

●全レコード読み込み
 'SELECT * FROM Umesyu';


SQLiteオープン/クローズ [SQLite]

PHPでSQLiteを使用する方法です。PHP5ではSQLiteライブラリを追加インストールせずにSQLiteデータベースと連携するアプリケーションを開発することが出来ます。

SQLiteの操作ですが、通常データベースオープン→SQL発行→データベースクローズのような手順となります。

今回はデータベースのオープン/クローズ関数を見てみましょう。
1.sqlite_open()
 SQLiteデータベースをオープンする。データベースが存在しない場合は作 成する 。

resource sqlite_open (
  string $filename [, int $mode = 0666 [, string &$error_message ]] )
 filename SQLite データベースのファイル名。もしこのファイルが存在しない場合、 SQLite はファイルを生成しようとします。
 mode  ファイルのモード。
 rror_message 参照として渡され、エラーが発生した場合に データベースがオープンできなかった原因を説明する 記述的なエラーメッセージを保持するために設定されます。
 返り値 成功時にリソース (データベースハンドル)、失敗時に FALSE を返します。

2.sqlite_close()
 オープンされたSQLiteデータベースを閉じる。

 void sqlite_close ( resource $dbhandle
 dbhandle  SQLite データベースリソース。 sqlite_open() の戻り値です
 返り値無し 



SQLiteの特徴 [SQLite]

SQLiteについて勉強しましたのでメモっておきます。

1.パブリックドメインでの提供
 著作権などの権利が放棄された状態で提供されています。なので、誰でも自由に利用でき、商用/使用を問わず無料で使用できます。

2.データベースサーバが無い
 各種ライブラリがデータベースを直接操作するため、インストールのが不要です。デスクトップアプリや携帯電話などで使用用途が考えられます。GoogleのAndroid端末でも採用されてますね。

3.1データベース1ファイル
 ファイルをコピーするだけでバックアップ可能なため、管理が簡単です。

4.データ型を意識せずに利用できる
 データ型を定義せずにテーブルを作成でき、データ型に関係なくデータを追加できます。


私はDBについてよく知らないのですが、そんな私でもSQliteなら出来そうです。 




SQLiteでも使ってみるか [SQLite]

まず、ツールをインストールしましょう。いろんなツールがありますが、ジオプラスはSQLite2(バージョン2.8.17)ですのでTkSQLite を使ってみたいと思います。
スタンドアロン版をダウンロードしましょう。


TkSQLite
Standalone executable binary (sqlite 2.8.17 / 3.4.0)
http://reddog.s35.xrea.com/wiki/TkSQLite.html


このままだと英語なので、環境変数LANGにjaを設定します。
SQLite2.jpg


起動したらメニューから、①[ファイル]→[SQLite2DBを新規作成]でDBを作成します。ジオプラスでは、アップロードできる拡張子が決まっていますのでumesyu.dbとしましょう。(umesyu.sqliteは使用できません。)


SQlite1.jpg


今回は、梅酒データベースを作ってみたいと思います。
必要となりそうなデータを挙げて見ましょう。

 変数説明 
 idINTEGER PRIMARY KEY プライマリーキー
 title text 銘柄
 desc text 説明
 maker text 製造者
 materials text 原材料
 alcMin INTEGER アルコール分
 alcMax INTEGER アルコール分
 capacity INTEGER 容量
 price INTEGER 価格
 smell  INTEGER  香り
 sweet  INTEGER  甘み
 after  INTEGER  後味
 other1 text 拡張用1
 other2 text 拡張用2
 other3 text 拡張用3

②に以下のSQL文を入力して、[データベース]→[SQL実行]を行うとDBが作成されます。
CREATE TABLE Umesyu (
id INTEGER PRIMARY KEY,
title text,
desc text,
maker text,
materials text,
alcMin INTEGER,
alcMax INTEGER,
capacity INTEGER,
price INTEGER,
smell INTEGER,
sweet INTEGER,
after INTEGER,
other1 text,
other2 text,
other3 text);

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。