開発環境
- OS X Mavericks - Apple (OS)
- Dart Editor (開発環境)
- Dartium | Dart/ Structured web apps (ブラウザ, Dart VM 用 (Chromium with the Dart VM))
- Safari (ブラウザ, JavaScript 用)
- Dart (プログラミング言語)
初めてのコンピュータサイエンス(Jennifer Campbell、Paul Gries、Jason Montojo、Greg Wilson(著)長尾 高弘(翻訳))の15章(データベース)、15.11(練習問題)、2-a.をDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
15.11(練習問題)、2-a.
コード
sample.dart
import 'dart:html';
import 'dart:indexed_db' as idb;
import 'dart:async' as async;
void main() {
run.onClick.listen((MouseEvent event){
pre.text = window.navigator.userAgent + '\n';
if(idb.IdbFactory.supported){
window.indexedDB.open('census.db',
version: 3,
onUpgradeNeeded: _initializeDatabase)
.then(_loadFromDB)
.then(_showAll)
.then(_end);
} else {
pre.text += 'このブラウザではindexedDBは使用出来ません';
}
});
clear.onClick.listen((MouseEvent event) => pre.text = '');
}
ButtonElement run= querySelector('#run_dart');
ButtonElement clear = querySelector('#clear');
PreElement pre = querySelector('#pre0');
async.Future _loadFromDB(idb.Database db){
var transaction = db.transaction('Capitals', 'readwrite');
var object_store = transaction.objectStore('Capitals');
object_store.clear();
data.forEach((var values){
object_store.add({
'State':values[0],
'City':values[1],
'Population': values[2]});
});
return transaction.completed;
}
void _initializeDatabase(idb.VersionChangeEvent e) {
print('hello');
idb.Database db = (e.target as idb.Request).result;
var object_store = db.createObjectStore('Capitals',
keyPath:'State',
autoIncrement: true);
}
async.Future _showAll(idb.Database db){
var transaction = db.transaction('Capitals', 'readwrite');
var object_store = transaction.objectStore('Capitals');
pre.text += '${object_store.name}\n';
var key = object_store.keyPath;
pre.text += 'データ(州/準州, 州/準州都, 人口)\n';
var cursors = object_store.openCursor(autoAdvance: true).asBroadcastStream();
cursors.listen((var cursor) {
pre.text += '${cursor.value}\n';
});
return transaction.completed;
}
async.Future _end(idb.Database db){
pre.text += '終了\n';
}
var data = [["ニューファンドランド・ラブラドール州", 'セント・ジョンズ', 172918],
["プリンスエドワードアイランド州", 'シャーロットタウン', 58358],
["ノバスコシア州", 'ハリファックス', 359183],
["ニューブランズウィック州", 'フレデリクトン', 81346],
["ケベック州", 'ケベック', 682757],
["オンタリオ州", 'トロント', 4682897],
["マニトバ州", 'ウィニペグ', 671274],
["サスカチュワン州", 'レジャイナ', 192800],
["アルバータ州", 'エドモントン', 937845],
["ブリティッシュコロンビア州", 'ビクトリア', 311902],
["ユーコン準州", 'ホワイトホース', 21405],
["ノースウェスト準州", 'イエローナイフ', 16541],
["ヌナブト準州", 'イカルイト', 5236]];
0 コメント:
コメントを投稿