| クライアント・データベース操作(SQLite) |
| データ操作 | |||||||||||||||||||||
| 作者 岡田 一志 | |||||||||||||||||||||
| 2010年2月15日(月曜日) 00:00 | |||||||||||||||||||||
|
CurlではJava DB(Derby)やAIRのようなローカルデータベース機能をオープンソースであるCDK(Curl Data Kit)を利用して、利用することができます。CDKはSQLiteを利用しています。また、Curl7.0からは特権なしで稼働します。
SQLiteの詳細については以下のサイトを参照ください。 準備ローカルデータベースを利用するために、CDKを下記サイトからダウンロードし、Zipファイルを展開します。2010年2月時点ではバージョン1.1が最新のようです。 この中にSQLiteのライブラリも含まれておりますので、別途SQLiteをダウンロードする必要はありません。 基本的なSQLiteへのアクセスまずは以下のようにmanifestを設定し、COM.CURL.CDK.SQLITEをimportします。(manifest.mcurlのパスは環境に合わせて変更してください。)
最初にSQLiteDatabaseクラスを用いてデータベースオブジェクトを生成します。 この際指定するURLはデータの格納されるファイルのパスとなります。もしurlがNULLの場合は、メモリデータベースとなります。メモリデータベースはApplet停止時にクリアされてしまいます。
次に上記で生成されたデータベースオブジェクトのexecuteメソッドを用いて更新系のSQL文を実行します。(creata table/drop table等のSQL文も実行可能)以下のサンプルコードではテーブルを作成し、テストデータを挿入しています。
SQL文の記載されたファイルからそのSQL文を実行するために、以下のようなこともできます。
次にデータベースからデータを取得する例を紹介します。以下のサンプルコードでは、sql-rowsメソッドで取得した行データをdumpマクロでコンソールに出力しています。1行だけの取得であれば、sql-rowというメソッドも用意されております。
ステートメントを利用したSQL実行については、create-statementメソッドを利用し、SQLiteStatementオブジェクトを作成し、stepメソッドでSQL文を実行できます。また、CDKではJDBCのPreparedStatementのような、ステートメントを事前に準備しておき、ステートメント作成時にプレース・ホルダとして「?」をセットできます。これらのプレース・ホルダにバインドするにはbindメソッドを利用し、最後にstepでSQL文を実行します。sql-rowやsql-rowsにも同様にプレース・ホルダをセットすることができ、残余引数としてバインドする値をセットできます。
レコードセットとの連携テーブルとRecordSetと連携が容易に可能となっています。これにはコネクションオブジェクト(SQLiteConnection)を引数にしてSQLiteRecordSet.create-from-table-nameクラスプロシージャを実行します。以下はサンプルとなります。
データベースの暗号化Curl7.0からはSQLiteデータベースの暗号化がサポートされています。暗号方式はAES256, AES128, RC4がサポートされております。(SQLiteEncryptionType参照)暗号化されたデータベースを利用する方法は、SQLiteDatabaseのコンストラクタ、もしくは、SQLiteDatabase.attach, SQLiteLibrary.rekeyで、引数に暗号方式(encryption-type)と鍵(key)を指定します。以下はSQLiteDatabaseコンストラクタに指定している例です。
サポートタイプサポートされるSQliteとCurlの型は以下のようになります。
サポートバージョンRTE6.0以上
|
|||||||||||||||||||||
| 最終更新 ( 2010年2月16日(火曜日) 11:26 ) | |||||||||||||||||||||
