最小限のコード

ソース

1import std.stdio;
2import jp.ku6.date;
3import jp.ku6.firebird.core;
4
5void main()
6{
7//-- 各種インスタンスの生成 これはアプリケーション内で一度やれば使い回せます
8
9    // 接続対象のデータベースと、アクセスするユーザー、パスを指定する
10    auto connection = new Connection("/var/data/firebird/test.fdb""user""password");
11
12    // トランザクションオブジェクトを生成する
13    auto transaction = new Transaction(connection);
14
15    // 実行するSQLを準備
16    auto statement = new Statement("SELECT id, comment, insert_date FROM test_table WHERE id=?", transaction);
17
18
19//-- データベースの接続と切断 これも多くの場合アプリケーション内で一度だけです
20
21    // データベースに接続と切断
22    connection.attach();
23    scope(exit) connection.detach();
24
25
26//-- トランザクションの開始と終了
27
28    //トランザクションを開始
29    // また、成功したらcommit、失敗したらrollbackとします。
30    transaction.begin();
31    scope(success) transaction.commit();
32    scope(failure) transaction.rollback();
33
34
35//-- 1トランザクション内で複数回実行もできます
36
37    // SQLの準備と終了
38    statement.prepare;
39    scope(exit) statement.finish;
40
41    // プレースホルダに変数をセット
42    statement.set(0u, 3);
43
44    // SQLを実行し、結果を読み込む
45    auto result = statement.execute;
46    while (result.fetch)
47    {
48        int id = result.get!int(0);
49        string comment = result.get!string(1);
50        DateTime insertDate = result.get!DateTime(2);
51        writefln("%d, %s, %04d-%02d-%02d", id, comment, insertDate.year, insertDate.month, insertDate.day);
52    }
53}

SELECT対象のテーブル

CREATE TABLE test_table
(
    id INTEGER,
    comment VARCHAR(255),
    insert_date TIMESTAMP
);

実行結果

SELECTしたレコードのデータが表示されます。
1, コメント, 2009-05-27