後々のことを考えてUI部分とデータベース接続処理のコードを分けてみた
sqlite3のデータベースから、日本語が含まれるデータを読み込み表示させる処理についてはやっとわかりました。
今後開発を進めていく中でこういうデータベース接続の部分とUI部分のコードは分離しておいた方がきっとテストしやすいコードになるのかなと思い、ひとまずこういうファイルを作りました。
//データベース接続処理 var blogDB = function(){ this.items=[]; var db = Titanium.Database.install('blog.db','blogDB'); var rows = db.execute('SELECT * FROM entry'); for(var i=0;i < this.prop_list.length;i++){ Titanium.API.info(rows.fieldByName(this.prop_list[i])); this[this.prop_list[i]] = rows.fieldByName(this.prop_list[i]); } rows.close(); db.close(); this.init(); }; blogDB.prototype = { init:function(){ var item ={}; var columns = [ "blog_id", "blog_entry" ]; var db = Titanium.Database.install('blog.db','blogDB'); var rows = db.execute('SELECT * FROM entry'); var i,z= columns.length; while (rows.isValidRow()){ for(i=0;i < z;i++){ item[columns[i]] = rows.fieldByName(columns[i]); } this.items.push(item); rows.next(); } rows.close(); db.close(); return this.items; } };
このファイルを読み込む形でapp.jsのソースはこんな感じにしてみました
Ti.include('database.js'); // 一部略 var WebView = Titanium.UI.createWebView({ borderRadius: 5, borderWidth : 1 }); var blogDB = new blogDB(); Titanium.API.info(blogDB.items); WebView.html = blogDB.items[0].blog_entry; win2.add(WebView);
という感じにして、Titanium.UI.createWebViewメソッドを使って、データベースに格納されている日本語の情報をHTMLとして画面に表示することが出来ます。
次回書きたい内容
- blogDBクラスの設計が正直いけてないと思うのでこのあたりを手入れしたいので、そのあたりの内容
- Unit Test関連