Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
UppHub
Status & Roadmap
FAQ
Authors & License
Forums
Funding U++
Search on this site











SourceForge.net Logo

SourceForge.net Logo

GitHub Logo

Discord Logo

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

 

 

 

 

Do you want to contribute?