From 2c2f38d74621f9e1ad3785e5468d1b3b920e2a3d Mon Sep 17 00:00:00 2001 From: cxl Date: Mon, 1 Jun 2009 21:01:04 +0000 Subject: [PATCH] Sql tutorial git-svn-id: svn://ultimatepp.org/upp/trunk@1257 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- tutorial/Sql01/Sql01.upp | 10 ++++++++++ tutorial/Sql01/init | 5 +++++ tutorial/Sql01/main.cpp | 22 ++++++++++++++++++++++ tutorial/Sql02/Sql02.upp | 10 ++++++++++ tutorial/Sql02/init | 5 +++++ tutorial/Sql02/main.cpp | 33 +++++++++++++++++++++++++++++++++ tutorial/Sql03/Sql03.upp | 10 ++++++++++ tutorial/Sql03/init | 5 +++++ tutorial/Sql03/main.cpp | 33 +++++++++++++++++++++++++++++++++ tutorial/Sql04/MyApp.h | 13 +++++++++++++ tutorial/Sql04/MyApp.sch | 4 ++++ tutorial/Sql04/Sql04.upp | 12 ++++++++++++ tutorial/Sql04/init | 5 +++++ tutorial/Sql04/main.cpp | 35 +++++++++++++++++++++++++++++++++++ tutorial/Sql05/MyApp.h | 13 +++++++++++++ tutorial/Sql05/MyApp.sch | 9 +++++++++ tutorial/Sql05/Sql05.upp | 12 ++++++++++++ tutorial/Sql05/init | 5 +++++ tutorial/Sql05/main.cpp | 33 +++++++++++++++++++++++++++++++++ tutorial/Sql06/MyApp.h | 13 +++++++++++++ tutorial/Sql06/MyApp.sch | 4 ++++ tutorial/Sql06/Sql06.upp | 12 ++++++++++++ tutorial/Sql06/init | 5 +++++ tutorial/Sql06/main.cpp | 34 ++++++++++++++++++++++++++++++++++ 24 files changed, 342 insertions(+) create mode 100644 tutorial/Sql01/Sql01.upp create mode 100644 tutorial/Sql01/init create mode 100644 tutorial/Sql01/main.cpp create mode 100644 tutorial/Sql02/Sql02.upp create mode 100644 tutorial/Sql02/init create mode 100644 tutorial/Sql02/main.cpp create mode 100644 tutorial/Sql03/Sql03.upp create mode 100644 tutorial/Sql03/init create mode 100644 tutorial/Sql03/main.cpp create mode 100644 tutorial/Sql04/MyApp.h create mode 100644 tutorial/Sql04/MyApp.sch create mode 100644 tutorial/Sql04/Sql04.upp create mode 100644 tutorial/Sql04/init create mode 100644 tutorial/Sql04/main.cpp create mode 100644 tutorial/Sql05/MyApp.h create mode 100644 tutorial/Sql05/MyApp.sch create mode 100644 tutorial/Sql05/Sql05.upp create mode 100644 tutorial/Sql05/init create mode 100644 tutorial/Sql05/main.cpp create mode 100644 tutorial/Sql06/MyApp.h create mode 100644 tutorial/Sql06/MyApp.sch create mode 100644 tutorial/Sql06/Sql06.upp create mode 100644 tutorial/Sql06/init create mode 100644 tutorial/Sql06/main.cpp diff --git a/tutorial/Sql01/Sql01.upp b/tutorial/Sql01/Sql01.upp new file mode 100644 index 000000000..2416cd8ff --- /dev/null +++ b/tutorial/Sql01/Sql01.upp @@ -0,0 +1,10 @@ +uses + Core, + plugin\sqlite3; + +file + main.cpp; + +mainconfig + "" = ""; + diff --git a/tutorial/Sql01/init b/tutorial/Sql01/init new file mode 100644 index 000000000..5c6abeb90 --- /dev/null +++ b/tutorial/Sql01/init @@ -0,0 +1,5 @@ +#ifndef _Sql01_icpp_init_stub +#define _Sql01_icpp_init_stub +#include "Core/init" +#include "plugin\sqlite3/init" +#endif diff --git a/tutorial/Sql01/main.cpp b/tutorial/Sql01/main.cpp new file mode 100644 index 000000000..a851da8fb --- /dev/null +++ b/tutorial/Sql01/main.cpp @@ -0,0 +1,22 @@ +#include +#include + +using namespace Upp; + +CONSOLE_APP_MAIN +{ + Sqlite3Session sqlite3; + if(!sqlite3.Open(ConfigFile("simple.db"))) { + Cout() << "Can't create or open database file\n"; + return; + } + +#ifdef _DEBUG + sqlite3.SetTrace(); +#endif + + Sql sql(sqlite3); + sql.Execute("select date('now')"); + while(sql.Fetch()) + Cout() << sql[0]; +} diff --git a/tutorial/Sql02/Sql02.upp b/tutorial/Sql02/Sql02.upp new file mode 100644 index 000000000..2416cd8ff --- /dev/null +++ b/tutorial/Sql02/Sql02.upp @@ -0,0 +1,10 @@ +uses + Core, + plugin\sqlite3; + +file + main.cpp; + +mainconfig + "" = ""; + diff --git a/tutorial/Sql02/init b/tutorial/Sql02/init new file mode 100644 index 000000000..4d65b675c --- /dev/null +++ b/tutorial/Sql02/init @@ -0,0 +1,5 @@ +#ifndef _Sql02_icpp_init_stub +#define _Sql02_icpp_init_stub +#include "Core/init" +#include "plugin\sqlite3/init" +#endif diff --git a/tutorial/Sql02/main.cpp b/tutorial/Sql02/main.cpp new file mode 100644 index 000000000..36fb3d166 --- /dev/null +++ b/tutorial/Sql02/main.cpp @@ -0,0 +1,33 @@ +#include +#include + +using namespace Upp; + +CONSOLE_APP_MAIN +{ + Sqlite3Session sqlite3; + if(!sqlite3.Open(ConfigFile("simple.db"))) { + Cout() << "Can't create or open database file\n"; + return; + } + +#ifdef _DEBUG + sqlite3.SetTrace(); +#endif + + SQL = sqlite3; + + SQL.Execute("drop table TEST"); + SQL.ClearError(); + SQL.Execute("create table TEST (A INTEGER, B TEXT)"); + + for(int i = 0; i < 10; i++) + SQL.Execute("insert into TEST(A, B) values (?, ?)", i, AsString(3 * i)); + + Sql sql; + sql.Execute("select * from TEST"); + for(int i = 0; i < sql.GetColumns(); i++) + Cout() << sql.GetColumnInfo(i).name << '\n'; + while(sql.Fetch()) + Cout() << sql[0] << " \'" << sql[1] << "\'\n"; +} diff --git a/tutorial/Sql03/Sql03.upp b/tutorial/Sql03/Sql03.upp new file mode 100644 index 000000000..2416cd8ff --- /dev/null +++ b/tutorial/Sql03/Sql03.upp @@ -0,0 +1,10 @@ +uses + Core, + plugin\sqlite3; + +file + main.cpp; + +mainconfig + "" = ""; + diff --git a/tutorial/Sql03/init b/tutorial/Sql03/init new file mode 100644 index 000000000..61c723009 --- /dev/null +++ b/tutorial/Sql03/init @@ -0,0 +1,5 @@ +#ifndef _Sql03_icpp_init_stub +#define _Sql03_icpp_init_stub +#include "Core/init" +#include "plugin\sqlite3/init" +#endif diff --git a/tutorial/Sql03/main.cpp b/tutorial/Sql03/main.cpp new file mode 100644 index 000000000..3322727d5 --- /dev/null +++ b/tutorial/Sql03/main.cpp @@ -0,0 +1,33 @@ +#include +#include + +using namespace Upp; + +CONSOLE_APP_MAIN +{ + Sqlite3Session sqlite3; + if(!sqlite3.Open(ConfigFile("simple.db"))) { + Cout() << "Can't create or open database file\n"; + return; + } + +#ifdef _DEBUG + sqlite3.SetTrace(); +#endif + + SQL = sqlite3; + + SQL.Execute("drop table TEST"); + SQL.ClearError(); + SQL.Execute("create table TEST (A INTEGER, B TEXT)"); + + SqlId A("A"), B("B"), TEST("TEST"); + + for(int i = 0; i < 10; i++) + SQL * Insert(TEST)(A, i)(B, AsString(3 * i)); + + Sql sql; + sql * Select(A, B).From(TEST); + while(sql.Fetch()) + Cout() << sql[A] << " \'" << sql[B] << "\'\n"; +} diff --git a/tutorial/Sql04/MyApp.h b/tutorial/Sql04/MyApp.h new file mode 100644 index 000000000..e896c6488 --- /dev/null +++ b/tutorial/Sql04/MyApp.h @@ -0,0 +1,13 @@ +#ifndef _MyApp_h_ +#define _MyApp_h_ + +#include +#include + +using namespace Upp; + +#define SCHEMADIALECT +#define MODEL +#include "Sql/sch_header.h" + +#endif diff --git a/tutorial/Sql04/MyApp.sch b/tutorial/Sql04/MyApp.sch new file mode 100644 index 000000000..3a14f3598 --- /dev/null +++ b/tutorial/Sql04/MyApp.sch @@ -0,0 +1,4 @@ +TABLE(TEST) + INT (A) + STRING (B, 200) +END_TABLE diff --git a/tutorial/Sql04/Sql04.upp b/tutorial/Sql04/Sql04.upp new file mode 100644 index 000000000..e5e3b0fa8 --- /dev/null +++ b/tutorial/Sql04/Sql04.upp @@ -0,0 +1,12 @@ +uses + Core, + plugin\sqlite3; + +file + MyApp.h, + main.cpp, + MyApp.sch; + +mainconfig + "" = ""; + diff --git a/tutorial/Sql04/init b/tutorial/Sql04/init new file mode 100644 index 000000000..c9f295052 --- /dev/null +++ b/tutorial/Sql04/init @@ -0,0 +1,5 @@ +#ifndef _Sql05_icpp_init_stub +#define _Sql05_icpp_init_stub +#include "Core/init" +#include "plugin\sqlite3/init" +#endif diff --git a/tutorial/Sql04/main.cpp b/tutorial/Sql04/main.cpp new file mode 100644 index 000000000..33e044ae4 --- /dev/null +++ b/tutorial/Sql04/main.cpp @@ -0,0 +1,35 @@ +#include "MyApp.h" + +#include +#include + +CONSOLE_APP_MAIN +{ + Sqlite3Session sqlite3; + if(!sqlite3.Open(ConfigFile("simple.db"))) { + Cout() << "Can't create or open database file\n"; + return; + } + +#ifdef _DEBUG + sqlite3.SetTrace(); +#endif + + SQL = sqlite3; + + SqlSchema sch(SQLITE3); + All_Tables(sch); + SqlPerformScript(sch.Upgrade()); + SqlPerformScript(sch.Attributes()); + SQL.ClearError(); + + SqlId A("A"), B("B"), TEST("TEST"); + + for(int i = 0; i < 10; i++) + SQL * Insert(TEST)(A, i)(B, AsString(3 * i)); + + Sql sql; + sql * Select(A, B).From(TEST); + while(sql.Fetch()) + Cout() << sql[A] << " \'" << sql[B] << "\'\n"; +} diff --git a/tutorial/Sql05/MyApp.h b/tutorial/Sql05/MyApp.h new file mode 100644 index 000000000..197f3d000 --- /dev/null +++ b/tutorial/Sql05/MyApp.h @@ -0,0 +1,13 @@ +#ifndef _MyApp_h_ +#define _MyApp_h_ + +#include +#include + +using namespace Upp; + +#define SCHEMADIALECT +#define MODEL +#include "Sql/sch_header.h" + +#endif diff --git a/tutorial/Sql05/MyApp.sch b/tutorial/Sql05/MyApp.sch new file mode 100644 index 000000000..9daf65533 --- /dev/null +++ b/tutorial/Sql05/MyApp.sch @@ -0,0 +1,9 @@ +TABLE_(TEST) + INT_ (A) + STRING_ (B, 200) +END_TABLE + +TABLE_(TEST2) + INT (A) + STRING (B, 200) +END_TABLE diff --git a/tutorial/Sql05/Sql05.upp b/tutorial/Sql05/Sql05.upp new file mode 100644 index 000000000..e5e3b0fa8 --- /dev/null +++ b/tutorial/Sql05/Sql05.upp @@ -0,0 +1,12 @@ +uses + Core, + plugin\sqlite3; + +file + MyApp.h, + main.cpp, + MyApp.sch; + +mainconfig + "" = ""; + diff --git a/tutorial/Sql05/init b/tutorial/Sql05/init new file mode 100644 index 000000000..6674705a2 --- /dev/null +++ b/tutorial/Sql05/init @@ -0,0 +1,5 @@ +#ifndef _Sql06_icpp_init_stub +#define _Sql06_icpp_init_stub +#include "Core/init" +#include "plugin\sqlite3/init" +#endif diff --git a/tutorial/Sql05/main.cpp b/tutorial/Sql05/main.cpp new file mode 100644 index 000000000..6c20ff703 --- /dev/null +++ b/tutorial/Sql05/main.cpp @@ -0,0 +1,33 @@ +#include "MyApp.h" + +#include +#include + +CONSOLE_APP_MAIN +{ + Sqlite3Session sqlite3; + if(!sqlite3.Open(ConfigFile("simple.db"))) { + Cout() << "Can't create or open database file\n"; + return; + } + +#ifdef _DEBUG + sqlite3.SetTrace(); +#endif + + SQL = sqlite3; + + SqlSchema sch(SQLITE3); + All_Tables(sch); + SqlPerformScript(sch.Upgrade()); + SqlPerformScript(sch.Attributes()); + SQL.ClearError(); + + for(int i = 0; i < 10; i++) + SQL * Insert(TEST)(A, i)(B, AsString(3 * i)); + + Sql sql; + sql * Select(A, B).From(TEST); + while(sql.Fetch()) + Cout() << sql[A] << " \'" << sql[B] << "\'\n"; +} diff --git a/tutorial/Sql06/MyApp.h b/tutorial/Sql06/MyApp.h new file mode 100644 index 000000000..197f3d000 --- /dev/null +++ b/tutorial/Sql06/MyApp.h @@ -0,0 +1,13 @@ +#ifndef _MyApp_h_ +#define _MyApp_h_ + +#include +#include + +using namespace Upp; + +#define SCHEMADIALECT +#define MODEL +#include "Sql/sch_header.h" + +#endif diff --git a/tutorial/Sql06/MyApp.sch b/tutorial/Sql06/MyApp.sch new file mode 100644 index 000000000..a15a72948 --- /dev/null +++ b/tutorial/Sql06/MyApp.sch @@ -0,0 +1,4 @@ +TABLE_(TEST) + INT_ (A) + STRING_ (B, 200) +END_TABLE diff --git a/tutorial/Sql06/Sql06.upp b/tutorial/Sql06/Sql06.upp new file mode 100644 index 000000000..e5e3b0fa8 --- /dev/null +++ b/tutorial/Sql06/Sql06.upp @@ -0,0 +1,12 @@ +uses + Core, + plugin\sqlite3; + +file + MyApp.h, + main.cpp, + MyApp.sch; + +mainconfig + "" = ""; + diff --git a/tutorial/Sql06/init b/tutorial/Sql06/init new file mode 100644 index 000000000..6674705a2 --- /dev/null +++ b/tutorial/Sql06/init @@ -0,0 +1,5 @@ +#ifndef _Sql06_icpp_init_stub +#define _Sql06_icpp_init_stub +#include "Core/init" +#include "plugin\sqlite3/init" +#endif diff --git a/tutorial/Sql06/main.cpp b/tutorial/Sql06/main.cpp new file mode 100644 index 000000000..9a78a7731 --- /dev/null +++ b/tutorial/Sql06/main.cpp @@ -0,0 +1,34 @@ +#include "MyApp.h" + +#include +#include + +CONSOLE_APP_MAIN +{ + Sqlite3Session sqlite3; + if(!sqlite3.Open(ConfigFile("simple.db"))) { + Cout() << "Can't create or open database file\n"; + return; + } + +#ifdef _DEBUG + sqlite3.SetTrace(); +#endif + + SQL = sqlite3; + + SqlSchema sch(SQLITE3); + All_Tables(sch); + SqlPerformScript(sch.Upgrade()); + SqlPerformScript(sch.Attributes()); + SQL.ClearError(); + + for(int i = 0; i < 10; i++) + SQL * Insert(TEST)(A, i)(B, AsString(3 * i)); + + Sql sql; + S_TEST x; + sql * Select(x).From(TEST); + while(sql.Fetch(x)) + Cout() << x.A << " \'" << x.B << "\'\n"; +}