Zoom Icon

Utilizzare SQLite Con il Cpp

From UIC Archive

SqliteClass: an SQLite C++ Wrapper

Contents


Utilizzare SQLite Con il Cpp
Author: Pn
Email: Email
Website: https://sites.google.com/site/lucianogiuseppeprogrammi/
Date: 06/10/2005 (dd/mm/yyyy)
Level: Some skills are required
Language: English Flag English.gif
Comments: Last Update: 11/07/2011



Introduzione

In this tutorial I'll show how to use C++ and SQLite with SqliteClass; I'll show how to create/open a SQLite3 DB, how to use sql statements.

Edited 12/04/2007 by ValerioSoft


Tools usati


Essay

Make a new project, unzip the TestClass into own project dir and let's config the IDE we use:

  1. Visual C++:
    1. Download SQLite zip file with dll and def file (Precompiled Binaries For Windows), and unzip it into own project dir.
    2. In windows console we go to project dir and write: "lib /def:sqlite.def" to get sqlite.lib.
    3. Add to project dependencies sqlite.lib e SqliteClass.a
  2. Gcc:
    1. Add to linking option: sqlite3.dll and SqliteClass.a;



  1. include <iostream>
  2. include <cstdlib>
  3. include "SqliteConnection.h"

using namespace std; using namespace SqliteClass;

int main() {

   SqliteConnection* aConn;
   SqliteRecordSet* aRecordSet;
   unsigned int i;
   try {
       // Create a new instance of SqliteConnection
       aConn = new SqliteConnection();
       // create a new file (open if just exists)
       aConn->open("test.sqlite3");
       //start transaction
       aConn->begin();
       // execute SQL update statement
       aConn->executeUpdate("drop table if exists MyTable");
       aConn->executeUpdate("create table MyTable(field1 TEXT, field2 TEXT);");
         // if table already exists we get an SqliteException
       aConn->executeUpdate("insert into MyTable(field1,field2) values ('hello','guys');");
       aConn->executeUpdate("insert into MyTable(field1,field2) values ('I','am');");
       aConn->executeUpdate("insert into MyTable(field1,field2) values ('SQLite','example');");
       // execute SQL query
       aConn->executeQuery("select * from MyTable", aRecordSet);
        if (!aRecordSet->isEmpty()) {
            while (aRecordSet->next()) {
                 for(i = 0; i < aRecordSet->columns(); i++)
                   cout << aRecordSet->fieldValue(i) << " ";
                 cout << endl;
            }
        } else {
            cout << "No records found!!\n";
        }
       // commit transaction
       aConn->commit();
   } catch (SqliteException ex) {
       // to annull all transactions
       aConn->rollback();
       cout << "Error:" << endl;
       cout << ex.getStatement() << endl;
       cout << ex.getErrorDescription() << endl;
   }
   aConn->close();
   delete aConn;
  1. ifdef WINDOWS
   system("PAUSE");
  1. endif
   return 0;

} Code::Blocks projects

If you know a bit of C++ adn SQL you have understand this code ;)

You must see the .h files to get information about other class methods


Note finali

Thx to Gianni, UIC and UNISA.

Pn =)


Disclaimer

I documenti qui pubblicati sono da considerarsi pubblici e liberamente distribuibili, a patto che se ne citi la fonte di provenienza. Tutti i documenti presenti su queste pagine sono stati scritti esclusivamente a scopo di ricerca, nessuna di queste analisi è stata fatta per fini commerciali, o dietro alcun tipo di compenso. I documenti pubblicati presentano delle analisi puramente teoriche della struttura di un programma, in nessun caso il software è stato realmente disassemblato o modificato; ogni corrispondenza presente tra i documenti pubblicati e le istruzioni del software oggetto dell'analisi, è da ritenersi puramente casuale. Tutti i documenti vengono inviati in forma anonima ed automaticamente pubblicati, i diritti di tali opere appartengono esclusivamente al firmatario del documento (se presente), in nessun caso il gestore di questo sito, o del server su cui risiede, può essere ritenuto responsabile dei contenuti qui presenti, oltretutto il gestore del sito non è in grado di risalire all'identità del mittente dei documenti. Tutti i documenti ed i file di questo sito non presentano alcun tipo di garanzia, pertanto ne è sconsigliata a tutti la lettura o l'esecuzione, lo staff non si assume alcuna responsabilità per quanto riguarda l'uso improprio di tali documenti e/o file, è doveroso aggiungere che ogni riferimento a fatti cose o persone è da considerarsi PURAMENTE casuale. Tutti coloro che potrebbero ritenersi moralmente offesi dai contenuti di queste pagine, sono tenuti ad uscire immediatamente da questo sito.

Vogliamo inoltre ricordare che il Reverse Engineering è uno strumento tecnologico di grande potenza ed importanza, senza di esso non sarebbe possibile creare antivirus, scoprire funzioni malevole e non dichiarate all'interno di un programma di pubblico utilizzo. Non sarebbe possibile scoprire, in assenza di un sistema sicuro per il controllo dell'integrità, se il "tal" programma è realmente quello che l'utente ha scelto di installare ed eseguire, né sarebbe possibile continuare lo sviluppo di quei programmi (o l'utilizzo di quelle periferiche) ritenuti obsoleti e non più supportati dalle fonti ufficiali.