Patch level : 12.0 no-patch
Files correlati : tsdb Commento : Prima implementazione TD_recordset per SQLAPI
This commit is contained in:
parent
0c16519027
commit
abe7dd1461
@ -76,7 +76,7 @@ void TDB_recordset::set(const char* sql)
|
|||||||
_sql.cut(0) << real_query;
|
_sql.cut(0) << real_query;
|
||||||
if (_sql.find("SELECT") >= 0 || _sql.find("select") >= 0)
|
if (_sql.find("SELECT") >= 0 || _sql.find("select") >= 0)
|
||||||
find_and_reset_vars();
|
find_and_reset_vars();
|
||||||
_rec.sq_set(_sql);
|
_rec->sq_set(_sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDB_recordset::set_connection(const char* conn_str)
|
void TDB_recordset::set_connection(const char* conn_str)
|
||||||
@ -118,7 +118,7 @@ void TDB_recordset::set_connection(const char* conn_str)
|
|||||||
|
|
||||||
int TDB_recordset::connect(const char * db, const char * user, const char * pass, const TT_driver tipo_db)
|
int TDB_recordset::connect(const char * db, const char * user, const char * pass, const TT_driver tipo_db)
|
||||||
{
|
{
|
||||||
return _rec.sq_connect(db, user, pass, tipo_db);
|
return _rec->sq_connect(db, user, pass, tipo_db);
|
||||||
}
|
}
|
||||||
|
|
||||||
TT_driver TDB_recordset::str_to_driver(const char* tipo_db)
|
TT_driver TDB_recordset::str_to_driver(const char* tipo_db)
|
||||||
@ -164,30 +164,28 @@ TT_driver TDB_recordset::str_to_driver(const char* tipo_db)
|
|||||||
return TSDB_undefined;
|
return TSDB_undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TDB_recordset::connect(const char* db, const char* user, const char* pass, const char* tipo_db)
|
int TDB_recordset::connect(const char* db, const char* user, const char* pass, const char* tipo_db) const
|
||||||
{
|
{
|
||||||
return _rec.sq_connect(db, user, pass, str_to_driver(tipo_db));
|
return _rec->sq_connect(db, user, pass, str_to_driver(tipo_db));
|
||||||
}
|
}
|
||||||
|
|
||||||
TRecnotype TDB_recordset::items() const
|
TRecnotype TDB_recordset::items() const
|
||||||
{
|
{
|
||||||
/*
|
if(!_rec->sq_is_loaded() && _items == 0)
|
||||||
if(!_rec.sq_is_loaded() && _items == 0)
|
_rec->sq_exec();
|
||||||
{
|
return _rec->sq_items();
|
||||||
_rec.exec()
|
|
||||||
}
|
|
||||||
return static_cast<TRecnotype>(_rec.sq_items());
|
|
||||||
return _items;
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDB_recordset::move_to(TRecnotype pos)
|
bool TDB_recordset::move_to(TRecnotype pos)
|
||||||
{
|
{
|
||||||
return _rec.sq_go(pos);
|
return _rec->sq_go(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
TDB_recordset::TDB_recordset(const char* sql, bool freezed) : _freezed(freezed), _loaded(false)
|
TDB_recordset::TDB_recordset(const char* sql, const bool freezed) : _freezed(freezed), _loaded(false)
|
||||||
{
|
{
|
||||||
|
set(sql);
|
||||||
|
_rec = new SSimple_query();
|
||||||
_items = 0;
|
_items = 0;
|
||||||
set(sql);
|
set(sql);
|
||||||
}
|
}
|
||||||
|
@ -72,13 +72,6 @@ protected:
|
|||||||
//SSimpleQuery(P_CONN_VOID &c, const char * query = "", bool ex = false);
|
//SSimpleQuery(P_CONN_VOID &c, const char * query = "", bool ex = false);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**< Costruttore, non inizializza nulla, da caricare successivamente */
|
|
||||||
SSimple_query() = default;
|
|
||||||
/**< 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! */
|
|
||||||
SSimple_query(const char* db, const char* user, const char* pass, const TT_driver tipo_db, const char * query = "", const bool ex = false, const bool freezed = false) : _rec(db, user, pass, tipo_db, query, ex, freezed) {}
|
|
||||||
//SSimpleQuery(const TString& db, const TString& user, const TString& 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 ~SSimple_query() = default;
|
|
||||||
|
|
||||||
// Connection functions
|
// Connection functions
|
||||||
/**< Eseguo la connessione */
|
/**< Eseguo la connessione */
|
||||||
@ -192,16 +185,24 @@ public:
|
|||||||
void freeze() { _rec.freeze(); }
|
void freeze() { _rec.freeze(); }
|
||||||
/**< Scongela il cursore */
|
/**< Scongela il cursore */
|
||||||
void defrost() { _rec.defrost(); }
|
void defrost() { _rec.defrost(); }
|
||||||
|
|
||||||
|
/**< Costruttore, non inizializza nulla, da caricare successivamente */
|
||||||
|
SSimple_query() = default;
|
||||||
|
/**< 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! */
|
||||||
|
SSimple_query(const char* db, const char* user, const char* pass, const TT_driver tipo_db, const char * query = "", const bool ex = false, const bool freezed = false) : _rec(db, user, pass, tipo_db, query, ex, freezed) {}
|
||||||
|
//SSimpleQuery(const TString& db, const TString& user, const TString& 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 ~SSimple_query() = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TDB_recordset : public TRecordset
|
class TDB_recordset : public TRecordset
|
||||||
{
|
{
|
||||||
SSimple_query _rec;
|
SSimple_query * _rec;
|
||||||
TString _sql;
|
TString _sql;
|
||||||
TString _dsn, _usr, _pwd, _drv;
|
TString _dsn, _usr, _pwd, _drv;
|
||||||
|
|
||||||
bool _freezed, _loaded, _columns_loaded;
|
bool _freezed, _loaded, _columns_loaded{};
|
||||||
TRecnotype _first_row, _pagesize, _items, _current_row;
|
TRecnotype _first_row{}, _pagesize{}, _items, _current_row{};
|
||||||
TArray _page, _column;
|
TArray _page, _column;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -210,7 +211,7 @@ protected:
|
|||||||
// Parsa la stringa di connessione contenuta nella query
|
// Parsa la stringa di connessione contenuta nella query
|
||||||
void set_connection(const char * conn_str);
|
void set_connection(const char * conn_str);
|
||||||
int connect(const char * db, const char * user, const char * pass, const TT_driver tipo_db);
|
int connect(const char * db, const char * user, const char * pass, const TT_driver tipo_db);
|
||||||
int connect(const char * db, const char * user, const char * pass, const char * tipo_db);
|
int connect(const char * db, const char * user, const char * pass, const char * tipo_db) const;
|
||||||
static TT_driver str_to_driver(const char* tipo_db);
|
static TT_driver str_to_driver(const char* tipo_db);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user