titanium/データベースを使ってみる
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2011/07/31からのアクセス回数 &counter;
** テーブルビューをデータベースに保存 [#g38726dd]
[[titanium/テーブルビューを作る]]
の結果をデータベースに保存できるようにします。
ここでも
[[Titanium Mobileで作る! iPhone/Androidアプリ第10回>htt...
を参考にものまねします。
データベースにテーブルrecordsを作成し、カラムに
- id: 整数の識別子主キー
- weight: 体重(text)
- at: 計測日(real)
SQLiteでは、日付はtextまたはrealで保持するのが一般できみ...
record_db.jsにデータベースの基本処理を定義します。
redord_db.jsの内容
#pre{{
var RecordDB = function() {
this.dbName = 'recorddb';
this.open = function () {
this.db = Titanium.Database.open(this.dbName);
};
this.close = function () {
this.db.close();
};
this.setRows = function (rows) {
var res = [];
if ( rows.getRowCount() > 0 ) {
Ti.API.debug('Found: ' + rows.getRowCount() );
for (i =0; rows.isValidRow(); i++) {
var record = {};
record.id = rows.fieldByName('id');
record.weight = rows.fieldByName('weight');
var time = rows.fieldByName('at', Titanium.Database.F...
record.at = new Date();
record.at.setTime(time);
res.push(record);
rows.next();
}
}
return res;
};
this.deleteOne = function(record) {
this.open();
var res = this.db.execute(
'DELETE FROM records WHERE id=?',
record.id
);
Ti.API.debug('Delete from DB');
this.close();
return true;
};
this.update = function(record) {
this.open();
Ti.API.debug('update at.getTime():' + record.at.getTime...
var res = this.db.execute(
'UPDATE records SET weight=?, at=? WHERE id=?',
record.weight,
record.at.getTime(),
record.id
);
Ti.API.debug('Update DB');
this.close();
return true;
};
this.insert = function(record) {
this.open();
Ti.API.debug('insert at.getTime():' + record.at.getTime...
var res = this.db.execute(
'INSERT INTO records (weight, at) VALUES(?,?)',
record.weight,
record.at.getTime()
);
Ti.API.debug('Insert into DB');
this.close();
};
this.findAll = function() {
this.open();
var rows = this.db.execute( 'SELECT * FROM records ORDE...
var res = this.setRows(rows);
rows.close();
this.close();
return res;
};
// テーブル作成
this.open();
//this.db.execute('DROP TABLE records');
this.db.execute('CREATE TABLE IF NOT EXISTS records ( id...
this.close();
};
}}
** テーブルビューの変更 [#i9445eb0]
データベースに対応するために、table_view.jsのデータセット...
table_view.jsのデータセットとコールバック処理部
#pre{{
Ti.include('record_db.js');
var db = new RecordDB();
var records = db.findAll();
function insertCallback(record) {
db.insert(record);
records = db.findAll();
updateRecord(records);
}
function updateCallback(record) {
db.update(record);
records = db.findAll();
updateRecord(records);
}
function deleteCallback(index) {
db.deleteOne(records[index]);
records = db.findAll();
updateRecord(records);
}
}}
*** 日付がずれる [#h964848a]
どうしてか分からないのですが、javascriptのDateのgetTimeの...
10~30秒ほど前後してしまい、表示の日付が1日ずれてしまいま...
これを回避するために、非常に場当たり的ですが、日付の設定...
また、前回は、indexを使っていましたが、今回はidに変更しま...
record_window.jsの変更部分にrecord.at.setHours(12);を追加
#pre{{
saveButton.addEventListener(
'click', function () {
var record = {};
record.id = win.record.id;
record.weight = weightField.value;
record.at = new Date(dateField.value);
record.at.setHours(12);
Ti.App.fireEvent(win.func, record);
win.close();
});
}}
*** 動作確認 [#sfbfaa89]
実際に動かしてみます。
代わり映えしませんが、きちんと追加、変更、削除ができるこ...
&ref(data_base.png);
** コメント [#l2c782be]
#vote(おもしろかった[4],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- Ti.App.fireEventで送った時にDateの時刻がずれることが分...
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2011/07/31からのアクセス回数 &counter;
** テーブルビューをデータベースに保存 [#g38726dd]
[[titanium/テーブルビューを作る]]
の結果をデータベースに保存できるようにします。
ここでも
[[Titanium Mobileで作る! iPhone/Androidアプリ第10回>htt...
を参考にものまねします。
データベースにテーブルrecordsを作成し、カラムに
- id: 整数の識別子主キー
- weight: 体重(text)
- at: 計測日(real)
SQLiteでは、日付はtextまたはrealで保持するのが一般できみ...
record_db.jsにデータベースの基本処理を定義します。
redord_db.jsの内容
#pre{{
var RecordDB = function() {
this.dbName = 'recorddb';
this.open = function () {
this.db = Titanium.Database.open(this.dbName);
};
this.close = function () {
this.db.close();
};
this.setRows = function (rows) {
var res = [];
if ( rows.getRowCount() > 0 ) {
Ti.API.debug('Found: ' + rows.getRowCount() );
for (i =0; rows.isValidRow(); i++) {
var record = {};
record.id = rows.fieldByName('id');
record.weight = rows.fieldByName('weight');
var time = rows.fieldByName('at', Titanium.Database.F...
record.at = new Date();
record.at.setTime(time);
res.push(record);
rows.next();
}
}
return res;
};
this.deleteOne = function(record) {
this.open();
var res = this.db.execute(
'DELETE FROM records WHERE id=?',
record.id
);
Ti.API.debug('Delete from DB');
this.close();
return true;
};
this.update = function(record) {
this.open();
Ti.API.debug('update at.getTime():' + record.at.getTime...
var res = this.db.execute(
'UPDATE records SET weight=?, at=? WHERE id=?',
record.weight,
record.at.getTime(),
record.id
);
Ti.API.debug('Update DB');
this.close();
return true;
};
this.insert = function(record) {
this.open();
Ti.API.debug('insert at.getTime():' + record.at.getTime...
var res = this.db.execute(
'INSERT INTO records (weight, at) VALUES(?,?)',
record.weight,
record.at.getTime()
);
Ti.API.debug('Insert into DB');
this.close();
};
this.findAll = function() {
this.open();
var rows = this.db.execute( 'SELECT * FROM records ORDE...
var res = this.setRows(rows);
rows.close();
this.close();
return res;
};
// テーブル作成
this.open();
//this.db.execute('DROP TABLE records');
this.db.execute('CREATE TABLE IF NOT EXISTS records ( id...
this.close();
};
}}
** テーブルビューの変更 [#i9445eb0]
データベースに対応するために、table_view.jsのデータセット...
table_view.jsのデータセットとコールバック処理部
#pre{{
Ti.include('record_db.js');
var db = new RecordDB();
var records = db.findAll();
function insertCallback(record) {
db.insert(record);
records = db.findAll();
updateRecord(records);
}
function updateCallback(record) {
db.update(record);
records = db.findAll();
updateRecord(records);
}
function deleteCallback(index) {
db.deleteOne(records[index]);
records = db.findAll();
updateRecord(records);
}
}}
*** 日付がずれる [#h964848a]
どうしてか分からないのですが、javascriptのDateのgetTimeの...
10~30秒ほど前後してしまい、表示の日付が1日ずれてしまいま...
これを回避するために、非常に場当たり的ですが、日付の設定...
また、前回は、indexを使っていましたが、今回はidに変更しま...
record_window.jsの変更部分にrecord.at.setHours(12);を追加
#pre{{
saveButton.addEventListener(
'click', function () {
var record = {};
record.id = win.record.id;
record.weight = weightField.value;
record.at = new Date(dateField.value);
record.at.setHours(12);
Ti.App.fireEvent(win.func, record);
win.close();
});
}}
*** 動作確認 [#sfbfaa89]
実際に動かしてみます。
代わり映えしませんが、きちんと追加、変更、削除ができるこ...
&ref(data_base.png);
** コメント [#l2c782be]
#vote(おもしろかった[4],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- Ti.App.fireEventで送った時にDateの時刻がずれることが分...
#comment_kcaptcha
ページ名:
SmartDoc