
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                                                           2010/02/22
  SQLele for SQLite3, HSP3

  S.Programs 2007-2010
                                         http://sprocket.babyblue.jp/
━━━━━━┯━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        名称│SQLele
  バージョン│1.15
    動作環境│Windows 98 / 2000 以降 (IA32)
──────┼────────────────────────────
    必要環境｜HSP 3.x
            ｜sqlite3.dll 3.5〜 (同梱)
━━━━━━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━

■ 概要
￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣
SQLele (ｽｸﾚﾚ) は、HSP で SQLite を簡単に扱うためのモジュールです。

たとえば、メディアプレイヤーのファイルリストや、アドレス帳やカレンダー
のデータ、画像処理ソフトの Undo/Redo 管理、ゲームの中のキャラの台詞、
セーブデータやハイスコア．．．

そういったアプリケーション内部のデータを管理するために、データ構造を設
計して文字列操作命令やメモリ操作命令で操作したり、ソートや抽出のための
ルーチンを書いた経験を、HSP をある程度使ったことがあるほとんどのユーザ
ーが持っているのではないでしょうか。

多くのアプリでは機能・性能ともそれで十分と思いますが、もし複雑なデータ
を扱うアプリを効率的に開発したいならば、SQLite というフリーの SQL デー
タベースエンジンを使ってみてはどうでしょう?

SQLite を使えば、HSP アプリに DLL ひとつ追加するだけで、アプリケーショ
ン内で SQL データベースを利用できるようになります。



■ 使用方法
￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣
module_sample ディレクトリに、モジュール sqlele.hsp とサンプルスクリプ
ト、sqlite3.dll が入っています。

SQLele の機能を使用するには、ユーザースクリプトのディレクトリに 
sqlite3.dll を置いて、sqlele.hsp をインクルードします。

各命令の詳細は、hs ヘルプ sqlele.hs に記載されています。このファイルを 
HSP インストールディレクトリ下の hsphelp ディレクトリに入れることで、
ヘルプマネージャからヘルプを参照できるようになります。

詳細な使用方法はヘルプとサンプルスクリプトに記載していますので、ここで
はイメージ程度に紹介します。

・主な命令・関数

よく使われる命令・関数には下記のものがあります。

 sql_open "filename" ; データベースファイルをオープン

 sql_q "SQL statement"[, arr] ; SQL 文を実行し、結果があれば受け取る

 sql_v("Column name"[, arr]) ; レコードセット変数のデータを参照

 sql_next [arr] ; 次のレコードデータを参照

 sql_close ; データベースをクローズ

・ミニサンプル

実行するごとに「ログテーブル」に現在時刻を追加記録して、テーブルの中身
を表示するスクリプト例です。

#include "sqlele.hsp"

	sql_open "サンプル.db"

	; 「ログテーブル」がない場合、テーブル作成
	sql_q "CREATE TABLE IF NOT EXISTS [ログテーブル] (ID INTEGER PRIMARY KEY, [内容])"

	; レコードを追加
	sql_q "INSERT INTO [ログテーブル] ([内容]) VALUES (datetime('now','localtime'))"

	; テーブル内のデータをすべて抽出
	sql_q "SELECT * FROM [ログテーブル]"
	count = stat

	mes "記録件数 : " + count + " 件"
	repeat count
		mes "ID=" + sql_v("ID") + ", 内容=" + sql_v("内容")
		sql_next
	loop

	sql_close

SQLele は SQL 文を書くことのみに注力できる楽な仕様なので、SQLite の柔
軟な仕様とあいまって、SQL 入門者にも扱いやすいのではないかと思います。

ほか、BLOB データの入出力やバインド変数による高速化など、SQLite が持つ
機能の多くを利用することができます。



■ 制限事項 / 仕様
￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣
・sql_q 命令で SELECT した場合、すべての結果が一旦レコードセット変数に
  格納されます。そのためシンプルな仕様になっていますが、結果が膨大な場
  合は応答時間が遅くなり、多くのメモリを消費する可能性があります。
  (特に BLOB を使うときは注意が必要です)

・SQLele で保存したデータベースの文字列 (テーブル名、カラム名含む) の
  エンコードは、UTF-8 になります。SQLele では、これ以外の文字コードは
  サポートされていません。HSP で読み込んだときは、Shift_JIS 形式に変換
  されます。

・SQLele 自体の使い方は単純ですが、SQL の文法や SQLite 特有の使い方、
  チューニング手法などは、各自で調べなければなりません。


より詳細な情報は、配布ページより参照できます。
http://sprocket.babyblue.jp/html/hsp_sqlele.htm



■ 著作権フリー
￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣
SQLele (モジュール本体、サンプル) は著作権フリーです。

SQLite はパブリックドメインとして公開されていて、自由に使うことができ
ます。

SQLite の開発元
http://www.sqlite.org/



■ リリースノート
￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣
1.15
・複数のデータベースを切り替えた場合の不具合の修正
・SELECT の結果レコードが 0 の場合もレコードセット変数を作成するよう変更

1.14 R2 (モジュール本体の変更はありません)
・ドキュメント、サンプルスクリプトの追加・変更
・ドキュメントサムネイルファイル追加 (HSP Document Library 用)
・添付 sqlite3.dll のバージョンを 3.6.22 にアップデート

1.14
・sql_collist() 関数の追加
・ビジー / ロック時の回復処理の改善
 (複数のプロセスから 1 つの DB ファイルに書き込む場合の安定性が向上)
・添付 sqlite3.dll のバージョンを 3.6.14 にアップデート
・ヘルプ記述の改良

1.13
・エラーメッセージを UTF-8 から Shift_JIS に変換して表示するよう修正

1.12
・NULL 値の読み出しに関する不具合の修正
・添付 sqlite3.dll のバージョンを 3.5.9 にアップデート

1.11
・レコードセット変数のカラム名を UTF-8 から Shift_JIS に変換するよう修正
・ビジー時のリトライ処理の改善
・サンプル コメントミス修正
・添付 sqlite3.dll のバージョンを 3.4.2 から 3.5.3 にアップデート

1.10
・SQLite データベースへ文字列をわたすときに、Shift_JIS から UTF-8 に変換するように変更
  ** SQLele 1.0 で作った日本語文字列を含むデータベースとは非互換になります **
  (これにより、LIKE 演算のミス判定などが起こらなくなります)
・sqlele.hsp に多重インクルード対策を入れた
・sqesc 関数の不具合修正
・ヘルプミスの修正

1.0
・初公開版


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━