SQLiteデータベースにカラムを追加する
以前 “SQLiteデータベースのバージョンを変更する“という記事を書いたが、結局実機でもうまく動作しなかった(Safari ブラウザやシミュレータと同じ結果だった)ので、データベースのバージョンによる管理を諦めて単純にカラムを追加することにした。
try { if (window.openDatabase) { db = openDatabase("BackgammonPositionsDB", "1.0", "Backgammon Positions DB", 200000); /* 現行バージョンのまま */ if (!db) { alert("Failed to open the database on disk."); /* 初期化 */ } else { db.transaction(function (tx) { /* 新しいカラムがなければ追加する */ tx.executeSql("SELECT crawford, star FROM BGPositions;", [], function(tx, result) { }, function(tx, error) { tx.executeSql("ALTER TABLE BGPositions ADD COLUMN crawford INTEGER default 0; VACUUM;"); tx.executeSql("ALTER TABLE BGPositions ADD COLUMN star INTEGER default 0; VACUUM;"); }); }); /* 全行読み込み */ return; } } else { alert("Couldn't open or support the database. Please try to contact with author."); /* 初期化 */ } } catch(e) { /* former changeVerion.js (前回はここにバージョンを変える関数をいれていた) */ }
Webkit のバグが解消されない限りはこの方法が良いと思う。
さてこのコードを埋めたアップデートファイルが、驚愕のわずか12時間程度で承認され公開(Backgammon Position Cards for iPhone, iPod touch, and iPad on the …)されている。また以前の投稿 “iPhone アプリのアップデートで課金する” で話していた様に価格も元の Tier5 に戻した。
更新(2010年5月11日): 一年間十分食べさせて頂いたのと世界的な不況ということを考慮してTier4に値下げした。:-)
個人事業主のウェブとiOSアプリ開発者で一児の父親。JavaScript, ActionScript, AppleScript, PHP, SQL, ObjCの読書実行試験運用管理を生業とし、BIND, SMTP, APACHE を FreeBSD, MacBSD, Mac OS X で使い、エディタは Vi, mi, Kod と遷移して現在は Smultron、そして Coda と Xcode の IDE を重用しています。作業の自動化や効率化の導入を応援しています。
P.S. 制作履歴はLinkedInの公開プロフィールをご覧ください。