SQL Sqlite3
Connecting Sqlite3 database
-- Starting new run of Sqlite3 simple test
Debug mode!
Tables: (1)
#1: SIMPLE_TEST1
insert into SIMPLE_TEST1(ID, NAME, LASTNAME, BDATE) values (0, 'Joe', 'Smith', 20000101)
insert into SIMPLE_TEST1(ID, NAME, LASTNAME, BDATE) values (1, 'Mike', 'Smith', 20000102)
insert into SIMPLE_TEST1(ID, NAME, LASTNAME, BDATE) values (2, 'Jon', 'Goober', 20000103)
delete from SIMPLE_TEST1 where ID > 3
insert into SIMPLE_TEST1(ID, NAME, LASTNAME, BDATE) values (5, 'wrongname', 'wronglastname', 20010604)
update SIMPLE_TEST1 set NAME = 'rightname', LASTNAME = 'rightlastname', BDATE = 20010604 where ID = 5
select ID, NAME, LASTNAME, BDATE from SIMPLE_TEST1
0 Joe Smith 20000101
Joe Smith
1 Mike Smith 20000102
Mike Smith
2 Jon Goober 20000103
Jon Goober
5 rightname rightlastname 20010604
rightname rightlastname
6 joseph 19990101
joseph
7 neel 19990102
neel
8 bob 19990103
bob
9 al 19990104
al
select * from SIMPLE_TEST1
0 Joe Smith 20000101
blank: Joe Smith
1 Mike Smith 20000102
blank: Mike Smith
2 Jon Goober 20000103
blank: Jon Goober
5 rightname rightlastname 20010604
blank: rightname rightlastname
6 joseph 19990101
blank: joseph
7 neel 19990102
blank: neel
8 bob 19990103
blank: bob
9 al 19990104
blank: al
-- Normal exit of Sqlite3 simple test
|
|
simple.h
#ifndef _SQL_Sqlite3_simple_h_
#define _SQL_Sqlite3_simple_h_
#include <plugin/sqlite3/Sqlite3.h>
using namespace Upp;
#define SCHEMADIALECT <plugin/sqlite3/Sqlite3Schema.h>
#define MODEL <SQL_Sqlite3/simple.sch>
#include "Sql/sch_header.h"
#endif
simple.cpp
#include "simple.h"
#ifdef _DEBUG
#include <Sql/sch_schema.h>
#endif
#include <Sql/sch_source.h>
CONSOLE_APP_MAIN
{
StdLogSetup(LOG_COUT|LOG_FILE);
LOG("-- Starting new run of Sqlite3 simple test");
Sqlite3Session sqlite3;
sqlite3.LogErrors(true);
if(!sqlite3.Open(ConfigFile("simple.db"))) {
LOG("Can't create or open database file\n");
return;
}
SQL = sqlite3;
// Update the schema to match the schema described in "simple.sch"
#ifdef _DEBUG
SqlSchema sch(SQLITE3);
All_Tables(sch);
if(sch.ScriptChanged(SqlSchema::UPGRADE))
SqlPerformScript(sch.Upgrade());
if(sch.ScriptChanged(SqlSchema::ATTRIBUTES)) {
SqlPerformScript(sch.Attributes());
}
if(sch.ScriptChanged(SqlSchema::CONFIG)) {
SqlPerformScript(sch.ConfigDrop());
SqlPerformScript(sch.Config());
}
sch.SaveNormal();
#endif
// Now test out some functionality:
//--------------------------------------------------------------------
// Get the list of tables
Vector<String> table_list = sqlite3.EnumTables("");
LOG(Format("Tables: (%d)",table_list.GetCount()));
for (int i = 0; i < table_list.GetCount(); ++i)
LOG(Format(" #%d: %s",i+1,table_list[i]));
S_SIMPLE_TEST1 row;
Sql sql;
// Test basic insertion:
// (check buglog for errors about duplicate entries if you run this more
// than once on the same db!)
sql*Insert(SIMPLE_TEST1)(ID,0)(NAME,"Joe")(LASTNAME,"Smith")(BDATE,20000101);
LOG(sql.ToString());
sql*Insert(SIMPLE_TEST1)(ID,1)(NAME,"Mike")(LASTNAME,"Smith")(BDATE,20000102);
LOG(sql.ToString());
sql*Insert(SIMPLE_TEST1)(ID,2)(NAME,"Jon")(LASTNAME,"Goober")(BDATE,20000103);
LOG(sql.ToString());
// Test deletion
sql*Delete(SIMPLE_TEST1).Where(ID > 3);
LOG(sql.ToString());
// Test insertion
sql*Insert(SIMPLE_TEST1)(ID,5)(NAME,"wrongname")(LASTNAME,"wronglastname")(BDATE,20010604);
LOG(sql.ToString());
// Test update
sql*SqlUpdate(SIMPLE_TEST1)(NAME,"rightname")(LASTNAME,"rightlastname")(BDATE,20010604).Where(ID==5);
LOG(sql.ToString());
// Test insertion with args
Sql insert("insert into SIMPLE_TEST1(name,bdate) values(?,?)",sqlite3);
insert.Run("joseph",19990101);
insert.Run( "neel",19990102);
insert.Run( "bob",19990103);
insert.Run( "al",19990104);
// Test selection:
sql*Select(row).From(SIMPLE_TEST1);
LOG(sql.ToString());
while (sql.Fetch()) {
LOG(Format("%d %s %s %d",sql[0],sql[1],sql[2],sql[3]));
LOG(Format("%s %s %s %s",sql[ID],sql[NAME],sql[LASTNAME],sql[BDATE]));
}
// Test selection using *
sql*Select(SqlAll()).From(SIMPLE_TEST1);
LOG(sql.ToString());
while (sql.Fetch()) {
LOG(Format("%d %s %s %d",sql[0],sql[1],sql[2],sql[3]));
LOG(Format("blank: %s %s %s %s",sql[ID],sql[NAME],sql[LASTNAME],sql[BDATE]));
}
LOG("-- Normal exit of Sqlite3 simple test");
}
simple.sch
TABLE_(SIMPLE_TEST1)
INT_ (ID) PRIMARY_KEY
STRING_ (NAME, 200)
STRING_ (LASTNAME, 200)
INT_ (BDATE)
END_TABLE
|