Titanium Mobile で、DBから取得した値を画面に表示してみる。
DBは、sqlite3を使用する。
初期状態として、SQLite Database Browserを使用して、取得対象となるデータを予め用意しておいた。
titleとurlをTEXT項目として持つテーブルを用意し、そこに対してSELECTを実行し、実行結果をもとに画面のTableView上に設定する。
// DBアクセス var db = Titanium.Database.install('testdb.db', 'db'); var dbRows = db.execute('select * from url '); var tblRows = []; // 取得したデータの全行に対してデータを取得する while(dbRows.isValidRow()){ tblRows.push({title:'' + dbRows.fieldByName('title') + '' ,hasChild:true, url:'' + dbRows.fieldByName('url') + ''}); dbRows.next(); } // DBのデータ取得後にCloseしておく。 db.close(); var tblView = Titanium.UI.createTableView({ data:tblRows });
上記のようなコードを書き、適切なwindowにaddすると、以下のようにDBのデータを元にTableViewが設定される。
ポイントは、isValidRowとnextメソッドで、1行ずつ末尾まで順に処理していくというところだろうか。
あと、Titanium.Database.install の引数が少し躓いた箇所。
第一引数は、sqlite3ファイルのpath。第二引数の方は、開いたDBに対して付ける名称、というのが今のところの私の理解。Titanium.Databaseにopenというメソッドがあるのだけど、そちらの引数として渡したり出来る様子。
今回参考にしたサイトは以下の通り。
Titanium Mobile: Database Driven Tables with SQLite