sql: + ON DUPLICATE KEY UPDATE (closes #33)
[sqlgg.git] / example / test_cxx.cpp
blob5dea6ba6ef9b528e2be6bd0cb6baef028cd96a24
1 #include "../impl/sqlite3_traits.hpp"
2 #include "test_cxx_gen.hpp"
3 #include <iostream>
4 #include <vector>
6 typedef sqlgg<sqlite3_traits> gen_t;
8 /*
9 void to_console(const wchar_t* s)
11 HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
13 DWORD ignore;
14 WriteConsoleW(console, s, wcslen(s), &ignore, NULL);
17 void to_console(const std::wstring& s)
19 to_console(s.c_str());
23 void explain(char const* msg, sqlite3* db)
25 std::cout << msg << " : " << sqlite3_errcode(db) << " : " << sqlite3_errmsg(db) << std::endl;
28 struct output
30 void operator()(int id, std::string name, std::string desc)
32 std::cout << id << ") " << name << " is " << desc << std::endl;
36 int main()
38 sqlite3* db = NULL;
40 sqlite3_open(":memory:", &db);
41 explain("open",db);
43 gen_t gen(db);
46 gen.drop_test();
47 explain("drop",db);
48 gen.drop_loc();
49 explain("drop",db);
50 gen.drop_zuzu();
51 explain("drop",db);
54 gen.create_test();
55 explain("create",db);
58 gen::data_1 t;
59 t.name="c++";
60 t.descr="ugly";
61 nResult = gen::Add(db,t);
62 cout << "insert : " << nResult << " " << sqlite3_errmsg(db) << endl;
64 gen.Add("c++","ugly");
65 explain("insert",db);
67 gen.Add("c","hard");
68 explain("insert",db);
70 gen.Add("ocaml","wonderful");
71 explain("insert",db);
73 gen.Exaggerate("really");
74 explain("update",db);
76 gen.select_all(output());
77 explain("select",db);
79 gen.create_loc();
80 explain("create_loc",db);
82 gen.create_zuzu("qq");
83 explain("create_zuzu",db);
85 sqlite3_close(db);
87 return 0;