Archive for the ‘SQLite’ Category

かなり長い間、放置状態になっていたStray Childですが、先日、Amazon S3ホスティングを試してみるで久しぶりにメンテナンスしました。

その際に、SQLiteにデータを保存できないという問題が発生していましたので、ちょっと調べてみました。

どうやら、ブラウザからSQLを使ってローカルのデータベース(SQLite)に保存するという、Web SQL Databaseの機能が、W3Cの定めるHTML5の仕様から廃止されたようです。

Web SQL Database
続きを読む »

flashcast:フリーで働くITエンジニア集団のブログ: Stray ChildをAndroid対応(gears編)でAndroidでも現在地の住所を表示できるようにしました。今回は、Androidでも住所の保存・閲覧・削除ができるようにします。

住所の保存は、iPhone同様、SQLiteを利用します。
また、前回同様、Gears API – Google Codeを利用します。

Database2API – gears – A proposal to add native HTML5 SQL API to Gears – Project Hosting on Google Codeが利用できれば、データを処理する部分はほとんど修正する必要はなかったのですが、試してみたところ、うまくいかず、まだサポートされていないようでしたので、Database API – Gears API – Google Codeで実装しました。

データベースをオープンする処理です。
続きを読む »

flashcast:フリーで働くITエンジニア集団のブログ: iPhone OS 3.0のSafariでGPS機能を使ったWeb Applicationを作る!(sqlite保存編)の続きです。

前回は表示されている住所の吹き出しの中に、「save」リンクを設け、その住所をSQLiteに保存するようにしましたので、その住所を見るための履歴画面を作ります。

htmlの見た目は極めて単純なものにします。この時点ではかっこよさとかは気にしません。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=320px, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<title>iPhone GPS Sample</title>
</head>
<body>
<div id="header">
<div id="title">Histories</div>
<a href="../sqlite/">back</a>
</div>
<div id="main"></div>
</body>
</html>

続きを読む »

flashcast:フリーで働くITエンジニア集団のブログ: iPhone OS 3.0のSafariでGPS機能を使ったWeb Applicationを作る!(iPhoneでテスト編)の続きです。

いままでのサンプルアプリは住所を表示するだけなので、もう一工夫して、その住所を保存できるようにしたいと思います。
保存先は、tonomemoと同じように組み込みデータベースのSQLiteにします。

まず、テーブル構造を考えます。

緯度と経度と・・・
ん。よく考えるとGoogle Maps APIの戻り値は、JSONオブジェクトなので、とのさまのflashcast:フリーで働くITエンジニア集団のブログ: ipod touch用のWeb Applicationを作成してみる(JSONについて)のアイデアが使えそうです。
続きを読む »

flashcast:フリーで働くITエンジニア集団のブログ: AIRアプリから作成したSQLiteのファイルがアンインストール時に削除されない!?の記事でAIRアプリから出力したSQLiteのファイルがAIRアプリのアンインストール時に削除されないということを書きましたが、それ以外にも、SQLiteのファイルに限らずAIRアプリから出力されたものは削除されません。

例えば、flashcast:フリーで働くITエンジニア集団のブログ: AIRアプリをログイン時に起動させる方法で書いたログイン時に自動起動させるためのロジックで出力されたスタートアップメニューのショートカット(Windowsの場合)も同様に削除されません。

同じ課題を抱えている人は結構いるようです。
フォーラム – Flex User Group

Flex User Groupの方々が、米Adobeサイトの[#SDK-16260] [External] Execute Function before Uninstalling AIR Application – Adobe Bug Systemに要望として投稿されていました。残念ながらインシデントとしてはクロージングされています。AIRのバグシステムにエスカレーションしているとは書かれていますが。
続きを読む »

SQLiteに接続する際に、テーブルが存在していなかったらファイルをcreateするAIRアプリを作成する場合、以下のコードのようなコードを書いてしまうと、アンインストールしてもファイルは削除されません。

package
{
 import flash.data.SQLResult;
 import flash.data.SQLStatement;
 import flash.events.SQLEvent;
 import flash.filesystem.File;

 public class TestManager
 {
  private var _connection:ConnectionManager;
  private var arr:Object;

  public function TestManager()
  {
  }

  public function initTest():void {
   var file:File = File.applicationStorageDirectory.resolvePath("test.db");
   var str:String = "CREATE TABLE IF NOT EXISTS test (" +
    "id INTEGER PRIMARY KEY, " +
    "original VARCHAR(10));"

   _connection = new ConnectionManager();
   _connection.initConnection(file);
   _connection.execute(str, initTestHandler)
  }

  private function initTestHandler(event:SQLEvent):void {
   _connection.execute(
    "SELECT * FROM test " +
    "ORDER BY id desc;",
    selectHandler);
  }

  private function selectHandler(event:SQLEvent):void {
   var stmt:SQLStatement = event.currentTarget as SQLStatement;
   stmt.removeEventListener(SQLEvent.RESULT, arguments.callee);

   var result:SQLResult = stmt.getResult();

   if (result.data != null) {
    arr = result.data;
   }
  }

  public function load():Object {
   return arr;
  }
 }
}

続きを読む »

SQLiteって、日本語で呼ぶとき困りませんか?エスキューエルライトなのかエスキューライトなのか。それはさておき、、、AIRでSQLite接続するアプリを開発していると、アプリケーションから作成したテーブルの中身を見たくなることがあります。そのやりかたはいくつかあるのですが、、、

  • ODBC経由で接続しAccessなどで参照する。
  • SQLiteManagerを使う。
  • etc…

ODBC経由で接続するにはドライバが必要になります。ドライバのダウンロードはSQLite ODBC Driverからできるのですが、sqliteodbc.exeをダウンロードして、ドライバをインストールして、データソースを作成して、Accessでインポート設定して、ちょっとめんどくさいです。

次にSQLiteManagerを使う方法です。SQLiteManagerとはPHP4ベースのWebアプリケーションです(サイト上にはPHP5でも動くとありますが)。
SourceForge.net: SQLiteManager
続きを読む »