root/trunk/examples/database/PackageTest.d

Revision 44, 3.2 kB (checked in by aarti_pl, 4 months ago)

- line endings

Line 
1 /*******************************************************************************
2
3     License:    Boost Software License, v. 1.0
4                 Academic Free License, v. 3.0
5                 BSD License
6
7     Authors:    Marcin Kuszczak, www.zapytajmnie.com (author's christian site)
8
9     Version:    0.9.1
10     Date:       30-Apr-2008
11
12     History:    0.9.1 (30-Apr-2008) -   initial public version
13
14  ******************************************************************************/
15
16 import std.stdio;
17
18 import dbi.sqlite.SqliteDatabase;
19
20 import doost.database.Sql;
21 import doost.database.Recordset;
22 import doost.database.Expression;
23 import doost.database.visitors.SqliteDb;
24
25 import examples.database.TestSchema;
26
27
28 //------------------------------------------------------------------------------
29
30 void printCols(COLS...)(Recordset r, COLS cols) {
31     string rest;
32     for(uint i=0; i<r.length; i++) {
33         writef(i);
34         writef(": ");
35
36         rest = "";
37         foreach(c; cols) {
38             writef(rest);
39             writef(r.column(c).row(i));
40             rest = " - ";
41         }
42         writefln;
43     }
44 }
45
46 void main(char[][] args) {
47     auto db = new SqliteDb("database.sqlite");
48
49     Sql sql;
50     Recordset r;
51
52     sql  = Create(AUTHORS).IfNotExists;
53     sql ~= Create(BOOKS).IfNotExists;
54     db.execute(sql);
55
56     sql  = Insert(AUTHORS.ID, 1)(AUTHORS.FIRSTNAME, "Alfred")(AUTHORS.SURNAME,  "Szklarski");
57     sql ~= Insert(AUTHORS.ID, 2)(AUTHORS.FIRSTNAME, "Zbigniew")(AUTHORS.SURNAME,  "Nienacki");
58     sql ~= Insert(AUTHORS.ID, 3)(AUTHORS.FIRSTNAME, "Edmund")(AUTHORS.SURNAME,  "Niziurski");
59     sql ~= Insert(AUTHORS.ID, 4)(AUTHORS.FIRSTNAME, "Aleksander")(AUTHORS.SURNAME,  "Fredro");
60     db.execute(sql);
61
62     sql  = Insert(BOOKS.AUTHOR_ID, 1)(BOOKS.TITLE, "Tomek w krainie kangurów");
63     sql ~= Insert(BOOKS.AUTHOR_ID, 1)(BOOKS.TITLE, "Tomek wśród łowców głów");
64     sql ~= Insert(BOOKS.AUTHOR_ID, 1)(BOOKS.TITLE, "Tomek u źródeł Amazonki");
65     sql ~= Insert(BOOKS.AUTHOR_ID, 1)(BOOKS.TITLE, "Tomek na Czarnym LÄ
66 dzie");
67     sql ~= Insert(BOOKS.AUTHOR_ID, 1)(BOOKS.TITLE, "Tomek na tropach Yeti");
68     sql ~= Insert(BOOKS.AUTHOR_ID, 1)(BOOKS.TITLE, "Tomek na wojennej ścieÅŒce");
69     db.execute(sql);
70
71     sql  = Insert(BOOKS.AUTHOR_ID, 2)(BOOKS.TITLE, "Pan Samochodzik i Fantomas");
72     sql ~= Insert(BOOKS.AUTHOR_ID, 2)(BOOKS.TITLE, "Pan Samochodzik i tajemnica tajemnic");
73     sql ~= Insert(BOOKS.AUTHOR_ID, 2)(BOOKS.TITLE, "Pan Samochodzik i Niewidzialni");
74     sql ~= Insert(BOOKS.AUTHOR_ID, 2)(BOOKS.TITLE, "Pan Samochodzik i złota rękawica");
75     sql ~= Insert(BOOKS.AUTHOR_ID, 2)(BOOKS.TITLE, "Pan Samochodzik i templariusze");
76     sql ~= Insert(BOOKS.AUTHOR_ID, 2)(BOOKS.TITLE, "Wyspa Złoczyńców");
77     db.execute(sql);
78
79     sql  = Insert(BOOKS.AUTHOR_ID, 3)(BOOKS.TITLE, "Sposób na Alcybiadesa");
80     sql ~= Insert(BOOKS.AUTHOR_ID, 3)(BOOKS.TITLE, "Klub włóczykijów");
81     sql ~= Insert(BOOKS.AUTHOR_ID, 3)(BOOKS.TITLE, "Siódme wtajemniczenie");
82     sql ~= Insert(BOOKS.AUTHOR_ID, 3)(BOOKS.TITLE, "Awantura w Niekłaju");
83     db.execute(sql);
84
85     sql  = Insert(BOOKS.AUTHOR_ID, 4)(BOOKS.TITLE, "Zemsta");
86     db.execute(sql);
87
88     sql = Select(AUTHORS.FIRSTNAME, AUTHORS.SURNAME, BOOKS.TITLE).Where(Equals(AUTHORS.ID, BOOKS.AUTHOR_ID));
89     r = db.query(sql);
90     printCols(r, AUTHORS.FIRSTNAME, AUTHORS.SURNAME, BOOKS.TITLE);
91 }
Note: See TracBrowser for help on using the browser.