スキップしてメイン コンテンツに移動

node.js で SQLite3 を使用するコードを書くときの予備録

node.js で SQLite3 を使用するコードを書くとき、予備録

まず、非同期処理。

C言語や Perl のように上から下に処理が続くと決して思ってはいけない。



SQLite3 の each は SQL 文実行完了時に呼び出す関数を指定できる


SQLite をインストールします、
npm install sqlite3


[test.js]
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(':memory:');

db.serialize(function() {
 db.run("CREATE TABLE lorem (info TEXT)");

 var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
 for (var i = 0; i < 10; i++) {
  stmt.run("Ipsum " + i);
 }
 stmt.finalize();


 var listInfo = new Array();
 db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {
  var tmp = new Object();
  tmp.id = row.id;
  tmp.info = row.info;

  console.log("[ROW]\t" + row.id + ": " + row.info);
  listInfo.push(tmp);
 }, function() {
  // Each 完了時に呼び出される
  for (var i = 0; i < listInfo.length; i++) {
   console.log("[BUF]\t" + listInfo[i].id + ": " + listInfo[i].info);
  }
  console.log("Finish.");
 });
});

db.close();




結果
[ROW] 1: Ipsum 0
[ROW] 2: Ipsum 1
[ROW] 3: Ipsum 2
[ROW] 4: Ipsum 3
[ROW] 5: Ipsum 4
[ROW] 6: Ipsum 5
[ROW] 7: Ipsum 6
[ROW] 8: Ipsum 7
[ROW] 9: Ipsum 8
[ROW] 10: Ipsum 9
[BUF] 1: Ipsum 0
[BUF] 2: Ipsum 1
[BUF] 3: Ipsum 2
[BUF] 4: Ipsum 3
[BUF] 5: Ipsum 4
[BUF] 6: Ipsum 5
[BUF] 7: Ipsum 6
[BUF] 8: Ipsum 7
[BUF] 9: Ipsum 8
[BUF] 10: Ipsum 9
Finish.


まぁ見れば分かる通り、each 関数の第三引数を指定しただけなんだけどね。
Database#each(sql, [param, ...], [callback], [complete])


このブログの人気の投稿

node.js で SQLite を async を使用して同期的に使用する

node.js で SQLite を async を使用して同期的に使用する node.js で SQLite を使うと何が怖いって非同期処理って所。
どのようにコードが動くのか分かり辛い。

そこで同期処理っぽくしてみたい。


async というライブラリを使用するとそれっぽいことができるそうなのでサンプルを書いた。

記述試験の書き方(仮)

記述試験の書き方(仮) 1,まえがき   法学部の試験では記述式の試験が出てくる。   その試験では、あるテーマについて自由に論ぜよとされている。 しかし、論ぜよと言われても、どのように論じればいいのか、すなわち、記述の仕方について教わったことがない(よくよく考えると、法的文章力を習得させる事だけが目的の授業はないと思われる)。   本稿では、私自身が法学畜になり、見聞きし、実際に活用している論述方法についてまとめている、はずである。その要点は、①条文、判例、学説を使う。②単なる事実と法的事実を区別する。③文章内に一貫性を持たせる。である。