Patch level : 12.0 no-patch
Files correlati : Commento : Aggiunti ttools e tsdb dalla versione 13 alla 12 con il wrapper SSimpleQuery git-svn-id: svn://10.65.10.50/branches/R_10_00@24362 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
34ceaffc52
commit
cd301ea04c
@ -1,25 +0,0 @@
|
|||||||
#include <dbrset.h>
|
|
||||||
|
|
||||||
|
|
||||||
real TDB_recordset::get_real(const char * field)
|
|
||||||
{
|
|
||||||
return real(get(field));
|
|
||||||
}
|
|
||||||
|
|
||||||
TDate TDB_recordset::get_date(const char * field)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
static TString dateApp;
|
|
||||||
dateApp.cut(0) << get(field);
|
|
||||||
*/
|
|
||||||
#ifdef DBG
|
|
||||||
message_box("Data da testare!");
|
|
||||||
#endif
|
|
||||||
// Ritorna un campo formato da YYYY-MM-DD:T****
|
|
||||||
return getDate(field);//TDate(dateApp.left(10));
|
|
||||||
}
|
|
||||||
|
|
||||||
TVariant TDB_recordset::get_variant(const char * field)
|
|
||||||
{
|
|
||||||
return TVariant(get(field));
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
#include <variant.h>
|
|
||||||
#include <xvtdb.h>
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TDB_recordset : DataBase redcordset *
|
|
||||||
* Wrapper di TXvt_recordset, aggiunge la compatibilità ai tipi di Agalib *
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
class TDB_recordset : public TObject, TXvt_recordset
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
// Getters
|
|
||||||
/**< Ritorna il valore nel campo (field) in formato (real) */
|
|
||||||
real get_real(const char * field);
|
|
||||||
/**< Ritorna il valore nel campo (field) in formato (TDate) */
|
|
||||||
TDate get_date(const char * field);
|
|
||||||
/**< Ritorna il valore nel campo (field) in formato (TVariant) */
|
|
||||||
TVariant get_variant(const char * field);
|
|
||||||
|
|
||||||
TDB_recordset();
|
|
||||||
TDB_recordset(const char* db, const char* user, const char* pass, TT_driver tipoDb, const char * query = "", bool ex = false);
|
|
||||||
};
|
|
7
src/include/tsdb.cpp
Normal file
7
src/include/tsdb.cpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include <tsdb.h>
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
* SSimpleQuery *
|
||||||
|
* Classe per esecuzioni di query temporanee (wrapper semplice per SACommand) *
|
||||||
|
******************************************************************************/
|
186
src/include/tsdb.h
Normal file
186
src/include/tsdb.h
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
/**********************************************************************************
|
||||||
|
* ######\ *
|
||||||
|
* ## __##\ *
|
||||||
|
* ## / \__| ######\ ######\####\ ######\ ######\ *
|
||||||
|
* ## | \____##\ ## _## _##\ ## __##\ ## __##\ *
|
||||||
|
* ## | ####### |## / ## / ## |## / ## |## / ## | *
|
||||||
|
* ## | ##\ ## __## |## | ## | ## |## | ## |## | ## | *
|
||||||
|
* \###### |\####### |## | ## | ## |####### |\###### | *
|
||||||
|
* \______/ \_______|\__| \__| \__|## ____/ \______/ *
|
||||||
|
* ## | *
|
||||||
|
* ## | *
|
||||||
|
* \__| *
|
||||||
|
**********************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************************************************************************************************
|
||||||
|
* TSDB.H *
|
||||||
|
* Inizio sviluppo: 13.10.2016 *
|
||||||
|
* Autore: Tolla *
|
||||||
|
* Descrizione: *
|
||||||
|
* La seguente libreria ha due scopi: *
|
||||||
|
* - Implementare una serie di funzioni che emulino interamente il funzionamento attuale di campo in Visual FoxPro su MSQL *
|
||||||
|
* - Creare delle nuove API per gestire il database in MSQL con cui verranno riscritti i programmi *
|
||||||
|
* Librerie esterne utilizzate: *
|
||||||
|
* - SQLAPI++ (Permette la gestione dei più famosi DB attualmente esistenti) *
|
||||||
|
********************************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __TSDB_H
|
||||||
|
#define __TSDB_H
|
||||||
|
|
||||||
|
#ifndef __XVTDB_H
|
||||||
|
#include <xvtdb.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// Tolla tools
|
||||||
|
#ifndef __TTOOLS_H
|
||||||
|
#include <ttools.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __STRINGS_H
|
||||||
|
#include <strings.h>
|
||||||
|
#endif // !__STRINGS_H
|
||||||
|
|
||||||
|
#ifndef __DATE_H
|
||||||
|
#include <date.h>
|
||||||
|
#endif // !__DATE_H
|
||||||
|
|
||||||
|
#ifndef __REAL_H
|
||||||
|
#include <real.h>
|
||||||
|
#endif // !__REAL_H
|
||||||
|
|
||||||
|
#define CHIAVE_ID_ "_ID_"
|
||||||
|
|
||||||
|
/********************************************************************************
|
||||||
|
* SSimpleQuery (Sirio Simple Query) *
|
||||||
|
* "Wrapper" di TXvt_recordset, implementa OGNI funzione in modo tale da *
|
||||||
|
* poterlo sostituire brutalmente in qualsiasi momento così da non aver *
|
||||||
|
* problemi come durante il passaggio da ISAM a SQL (spero). *
|
||||||
|
* Se ti stai domandando perchè non è stata usata l'ereditarietà (magari con *
|
||||||
|
* un bel ": private TXvt_recordset" così da bloccare il tutto) è per bloccare *
|
||||||
|
* qualsiasi riferimento a questa classe in eventuali reimplementazioni future. *
|
||||||
|
* Preferisco scrivere un po' di codice ridondante adesso che andare a fare *
|
||||||
|
* salti mortali dopo *
|
||||||
|
********************************************************************************/
|
||||||
|
class SSimpleQuery
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
TXvt_recordset _rec;
|
||||||
|
/**< Costruttore, accetta in ingresso una connessione, volendo è anche possibile impostare una query ed eseguirla. Attenzione! Non risponde se la query ha avuto un esito positivo o negativo! */
|
||||||
|
//SSimpleQuery(P_CONN_VOID &c, const char * query = "", bool ex = false);
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**< Costruttore, non inizializza nulla, da caricare successivamente */
|
||||||
|
SSimpleQuery() {}
|
||||||
|
/**< Costruttore, Accetta in ingresso dei parametri per la connessione, volendo è anche possibile impostare una query ed eseguirla. Attenzione! Non risponde se la query ha avuto un esito positivo o negativo! */
|
||||||
|
SSimpleQuery(const char* db, const char* user, const char* pass, TT_driver tipoDb, const char * query = "", const bool ex = false, const bool freezed = false) : _rec(db, user, pass, tipoDb, query, ex, freezed) {}
|
||||||
|
/**< Distruttore */
|
||||||
|
virtual ~SSimpleQuery() {}
|
||||||
|
|
||||||
|
// Connection functions
|
||||||
|
/**< Eseguo la connessione */
|
||||||
|
int sqConnect(const char* db, const char* user, const char* pass, TT_driver tipoDb) { return _rec.connect(db, user, pass, tipoDb); }
|
||||||
|
/* Mi scollego */
|
||||||
|
void sqDisconnect() { _rec.disconnect(); }
|
||||||
|
/**< Esegue la commit, di default in caso di errore viene chiamato il metodo rollback() */
|
||||||
|
const bool sqCommit(bool autoRoll = true) { return _rec.commit(); }
|
||||||
|
/**< Esegue il rollback all'ultimo commit */
|
||||||
|
const bool sqRollback() { _rec.rollback(); }
|
||||||
|
/**< Imposto il tipo di client che utilizzo */
|
||||||
|
void sqSetClient(int client) { _rec.setClient((TT_driver)client); }
|
||||||
|
void sqSetClient(TT_driver client) { _rec.setClient(client); }
|
||||||
|
// Imposto una opzione generica dellla connessione
|
||||||
|
void sqSetConOption(const char* opt) { _rec.setConOption(opt); }
|
||||||
|
/**< Abilito/Disabilito l'autocommit, (disabilitato di default) */
|
||||||
|
void sqSetAutocommit(bool ac) { _rec.setAutocommit(ac); }
|
||||||
|
/** Imposta la visibilità delle transazioni (vedi Funzione) */
|
||||||
|
void sqSetVisibility(isoLvl vis = committed) { _rec.setVisibility(vis); }
|
||||||
|
// Getters
|
||||||
|
/** Ritorna se la conessione è connessa */
|
||||||
|
const bool sqIsConnect() const { return _rec.isConnect(); }
|
||||||
|
/**< Ritorna se la connessione è attiva */
|
||||||
|
const bool sqIsAlive() const { return _rec.isAlive(); }
|
||||||
|
/** Ritorna la visibilità impostata */
|
||||||
|
const int sqGetVisibility() { return _rec.getVisibility(); }
|
||||||
|
/**< Ritorna se è attivo l'autocommit, true -> attivo, false -> disattivo o sconosciuto */
|
||||||
|
const bool sqGetAutocommit() { return _rec.getAutocommit(); }
|
||||||
|
/**< Ritorna il valore dell'opzione specificata */
|
||||||
|
const char* sqGetOption(const char* opt) { return _rec.getOption(opt); }
|
||||||
|
/**< Ritorno la versione del Client che sto utilizzando */
|
||||||
|
const long sqGetClientV() { return _rec.getClientV(); }
|
||||||
|
/**< Ritorno la versione del Server che sto utilizzando */
|
||||||
|
const char* sqGetServerV() { return _rec.getServerV(); }
|
||||||
|
/**< Ritorno la versione del Server che sto utilizzando in formato numerico */
|
||||||
|
const long sqGetServerVN() { return _rec.getServerVN(); }
|
||||||
|
/**< Ritorno se il recordset è carico */
|
||||||
|
const bool sqIsLoaded() const { return _rec.isLoaded(); }
|
||||||
|
/** Ritorno il numero di elementi nella query */
|
||||||
|
const long sqItems() { _rec.items(); }
|
||||||
|
|
||||||
|
// Conguration
|
||||||
|
/**< Imposta la query ricevuta come (const char *) nel recordset */
|
||||||
|
bool sqSet(const char* query) { return _rec.set(query); }
|
||||||
|
/**< Imposta la query ricevuta come (string) nel recordset */
|
||||||
|
bool sqSet(string query) { return _rec.set(query.c_str()); }
|
||||||
|
/**< Imposta la query ricevuta come (TString) nel recordset */
|
||||||
|
bool sqSet(TString& query) { return _rec.set(static_cast<const char *>(query)); }
|
||||||
|
/**< Esegue la query impostata nel recordset, se viene passato autoF == true esegue anche un comando sqNext() */
|
||||||
|
bool sqExec(bool autoF = true) { return _rec.exec(autoF); }
|
||||||
|
/**< Unisce le funzioni sqSet e sqExec, riceve la query come (const char *) */
|
||||||
|
bool sqSetExec(const char* query, bool autoF = true) { _rec.set(query); return _rec.exec(autoF); }
|
||||||
|
/**< Unisce le funzioni sqSet e sqExec, riceve la query come (string) */
|
||||||
|
bool sqSetExec(string query, bool autoF = true) { _rec.set(query.c_str()); return _rec.exec(autoF); }
|
||||||
|
/**< Unisce le funzioni sqSet e sqExec, riceve la query come (TString) */
|
||||||
|
bool sqSetExec(TString& query, bool autoF = true);
|
||||||
|
/**< Si sposta avanti di un record, in caso di esito negativo valorizza _stringError e _codeError */
|
||||||
|
bool sqNext() { return _rec.next(); }
|
||||||
|
/**< Si sposta indietro di un record, in caso di esito negativo valorizza _stringError e _codeError */
|
||||||
|
bool sqPrev() { return _rec.prev(); }
|
||||||
|
/**< Si sposta avanti di un record, in caso di esito negativo valorizza _stringError e _codeError */
|
||||||
|
bool sqFirst() { return _rec.first(); }
|
||||||
|
/**< Si sposta al primo record, in caso di esito negativo valorizza _stringError e _codeError */
|
||||||
|
bool sqLast() { return _rec.last(); }
|
||||||
|
/**< Si sposta alla posizione n, in caso di esito negativo valorizza _stringError e _codeError */
|
||||||
|
bool sqGo(int newPos) { return _rec.go(newPos); }
|
||||||
|
/**< Ritorna il numero di righe affette dall'ultima query */
|
||||||
|
const int sqRowsAffected() { return _rec.rowsAffected(); }
|
||||||
|
|
||||||
|
|
||||||
|
// Getters
|
||||||
|
/**< Ritorna il valore nel campo (field) in formato (int) */
|
||||||
|
int sqGetInt(const char* field) { return _rec.get_int(field); }
|
||||||
|
/**< Ritorna il valore nel campo (field) in formato (short) */
|
||||||
|
short sqGetShort(const char* field) { return _rec.get_short(field); }
|
||||||
|
/**< Ritorna il valore nel campo (field) in formato (long) */
|
||||||
|
long sqGetLong(const char* field) { return _rec.get_long(field); }
|
||||||
|
/**< Ritorna il valore nel campo (field) in formato (double) */
|
||||||
|
double sqGetDouble(const char* field) { return _rec.get_double(field); }
|
||||||
|
/**< Ritorna il valore nel campo (field) in formato (bool) */
|
||||||
|
bool sqGetBool(const char* field) { return _rec.get_bool(field); }
|
||||||
|
/**< Ritorna il valore nel campo (field) in formato (TDate) */
|
||||||
|
TDate sqGetDate(const char* field);
|
||||||
|
/**< Ritorna il valore nel campo (field) in formato (real) */
|
||||||
|
real sqGetReal(const char* field);
|
||||||
|
/**< Ritorna il valore nel campo (field) in formato (SADateTime), Campo non gestisce le ore */
|
||||||
|
//SADateTime sqGetDateTime(const char* field) { get_short(field); }
|
||||||
|
/**< Ritorna il valore nel campo (field) passato come (const char *) in formato (const char *) */
|
||||||
|
const char* sqGet(const char* field) { return _rec.get(field); }
|
||||||
|
/**< Ritorna il valore nel campo (field) passato come (string) in formato (const char *) */
|
||||||
|
const char* sqGet(string field) { return _rec.get(field.c_str()); }
|
||||||
|
/**< Ritorna il valore nel campo (field) passato come (TString) in formato (const char *) */
|
||||||
|
const char* sqGet(TString& field) { return _rec.get(static_cast<const char*>(field)); }
|
||||||
|
/**< Ritorna il valore nel campo (field) in formato (char) */
|
||||||
|
char sqGetChar(const char* field) { return _rec.get_char(field); }
|
||||||
|
/**< Ritorna la posizione attuale */
|
||||||
|
long sqPos() const { return _rec.pos(); }
|
||||||
|
|
||||||
|
// Error Getters
|
||||||
|
/**< Ritorno l'ultimo codice errore segnalato in formato /int) */
|
||||||
|
long sqGetCodeError(bool erase = true) { return _rec.get_code_error(erase); }
|
||||||
|
/**< Ritorno l'ultima stringa di errore segnalato in formato (const char *) */
|
||||||
|
const char* sqGetStringError(bool erase = true) { return _rec.get_string_error(erase); }
|
||||||
|
//char * getCharPointer(const char * field) { return const_cast<char*>(static_cast<const char*>(recset.Field(field).asString())); }
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
13
src/include/ttools.cpp
Normal file
13
src/include/ttools.cpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include <ttools.h>
|
||||||
|
|
||||||
|
|
||||||
|
std::string toString(long int n)
|
||||||
|
{
|
||||||
|
#if __cplusplus < 201103
|
||||||
|
std::stringstream elPollo;
|
||||||
|
elPollo << n;
|
||||||
|
return elPollo.str();
|
||||||
|
#else
|
||||||
|
return std::to_string(n);
|
||||||
|
#endif // __cplusplus < 201103
|
||||||
|
}
|
14
src/include/ttools.h
Normal file
14
src/include/ttools.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/**********************************************************************************
|
||||||
|
* Tolla Tools! Set di funzioni utili implementate per la nuova Release di Campo *
|
||||||
|
**********************************************************************************/
|
||||||
|
#ifndef __TTOOLS_H
|
||||||
|
#define __TTOOLS_H
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
/**< Trasforma un int in una string
|
||||||
|
* Questa funzione capisce la versione di C++ che si sta utilizzando e ritorna il risultato corretto */
|
||||||
|
std::string toString(long int n);
|
||||||
|
|
||||||
|
#endif // !__TTOOLS_H
|
Loading…
x
Reference in New Issue
Block a user