あんにんにっき。

日々思ったことや、おこったことを記録するブログ。要するに日記。

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