41#define DBI_CAP_TIME_ZONE_SUPPORT        (1 << 0)   
   42#define DBI_CAP_CHARSET_SUPPORT          (1 << 1)   
   43#define DBI_CAP_TRANSACTION_MANAGEMENT   (1 << 2)   
   44#define DBI_CAP_STORED_PROCEDURES        (1 << 3)   
   45#define DBI_CAP_LOB_SUPPORT              (1 << 4)   
   46#define DBI_CAP_BIND_BY_VALUE            (1 << 5)   
   47#define DBI_CAP_BIND_BY_PLACEHOLDER      (1 << 6)   
   48#define DBI_CAP_HAS_EXECRAW              (1 << 7)   
   49#define DBI_CAP_HAS_STATEMENT            (1 << 8)   
   50#define DBI_CAP_HAS_SELECT_ROW           (1 << 9)   
   51#define DBI_CAP_HAS_NUMBER_SUPPORT       (1 << 10)  
   52#define DBI_CAP_HAS_OPTION_SUPPORT       (1 << 11)  
   53#define DBI_CAP_SERVER_TIME_ZONE         (1 << 12)  
   54#define DBI_CAP_AUTORECONNECT            (1 << 13)  
   55#define DBI_CAP_EVENTS                   (1 << 14)  
   56#define DBI_CAP_HAS_DESCRIBE             (1 << 15)  
   57#define DBI_CAP_HAS_ARRAY_BIND           (1 << 16)  
   58#define DBI_CAP_HAS_RESULTSET_OUTPUT     (1 << 17)  
   59#define DBI_CAP_OPTION_PASSTHRU          (1 << 18)  
   61#define BN_PLACEHOLDER  0 
   64#define DBI_DEFAULT_STR_LEN 512 
   67#define QDBI_METHOD_OPEN                      1 
   68#define QDBI_METHOD_CLOSE                     2 
   69#define QDBI_METHOD_SELECT                    3 
   70#define QDBI_METHOD_SELECT_ROWS               4 
   71#define QDBI_METHOD_EXEC                      5 
   72#define QDBI_METHOD_COMMIT                    6 
   73#define QDBI_METHOD_ROLLBACK                  7 
   74#define QDBI_METHOD_BEGIN_TRANSACTION         8 
   75#define QDBI_METHOD_GET_SERVER_VERSION        9 
   76#define QDBI_METHOD_GET_CLIENT_VERSION       10 
   77#define QDBI_METHOD_EXECRAW                  11 
   78#define QDBI_METHOD_STMT_PREPARE             12 
   79#define QDBI_METHOD_STMT_PREPARE_RAW         13 
   80#define QDBI_METHOD_STMT_BIND                14 
   81#define QDBI_METHOD_STMT_BIND_PLACEHOLDERS   15 
   82#define QDBI_METHOD_STMT_BIND_VALUES         16 
   83#define QDBI_METHOD_STMT_EXEC                17 
   84#define QDBI_METHOD_STMT_FETCH_ROW           18 
   85#define QDBI_METHOD_STMT_FETCH_ROWS          19 
   86#define QDBI_METHOD_STMT_FETCH_COLUMNS       20 
   87#define QDBI_METHOD_STMT_NEXT                21 
   88#define QDBI_METHOD_STMT_CLOSE               22 
   89#define QDBI_METHOD_STMT_AFFECTED_ROWS       23 
   90#define QDBI_METHOD_STMT_GET_OUTPUT          24 
   91#define QDBI_METHOD_STMT_GET_OUTPUT_ROWS     25 
   92#define QDBI_METHOD_STMT_DEFINE              26 
   93#define QDBI_METHOD_SELECT_ROW               27 
   94#define QDBI_METHOD_OPT_SET                  28 
   95#define QDBI_METHOD_OPT_GET                  29 
   96#define QDBI_METHOD_STMT_DESCRIBE            30 
   97#define QDBI_METHOD_DESCRIBE                 31 
   98#define QDBI_METHOD_STMT_FREE                32 
   99#define QDBI_METHOD_STMT_EXEC_DESCRIBE       33 
  100#define QDBI_METHOD_GET_DRIVER_REAL_NAME     34 
  102#define QDBI_VALID_CODES 34 
  111#define QDBI_EVENT_WARNING      1 
  293#define DBI_OPT_NUMBER_OPT "optimal-numbers" 
  295#define DBI_OPT_NUMBER_STRING "string-numbers" 
  297#define DBI_OPT_NUMBER_NUMERIC "numeric-numbers" 
  299#define DBI_OPT_TIMEZONE "timezone" 
  305    friend hashdecl qore_dbi_mlist_private;
 
  308    hashdecl qore_dbi_mlist_private* priv; 
 
  344    DLLEXPORT 
void add(
int code, q_dbi_stmt_fetch_row_t method);
 
  346    DLLEXPORT 
void add(
int code, q_dbi_stmt_fetch_columns_t method);
 
  348    DLLEXPORT 
void add(
int code, q_dbi_stmt_fetch_rows_t method);
 
  350    DLLEXPORT 
void add(
int code, q_dbi_stmt_next_t method);
 
  353    DLLEXPORT 
void add(
int code, q_dbi_option_set_t method);
 
  355    DLLEXPORT 
void add(
int code, q_dbi_option_get_t method);
 
  358    DLLEXPORT 
void registerOption(
const char* name, 
const char* desc, 
const QoreTypeInfo* type = 0);
 
 
  368    friend hashdecl qore_dbi_private;
 
  372    hashdecl qore_dbi_private* priv;
 
  398    DLLLOCAL 
DBIDriver(
struct qore_dbi_private* p);
 
 
  402hashdecl qore_dbi_dlist_private;
 
  412    hashdecl qore_dbi_dlist_private *priv;
 
  414    DLLLOCAL 
DBIDriver* find_intern(
const char* name) 
const;
 
 
int(* q_dbi_rollback_t)(Datasource *ds, ExceptionSink *xsink)
signature for the DBI "rollback" method - must be defined in each DBI driver
Definition DBI.h:203
 
QoreValue(* q_dbi_get_client_version_t)(const Datasource *ds, ExceptionSink *xsink)
signature for the "get_client_version" method
Definition DBI.h:227
 
DLLEXPORT void DBI_concat_numeric(QoreString *str, QoreValue v)
concatenates a numeric value to the QoreString from the value
 
QoreValue(* q_dbi_exec_t)(Datasource *ds, const QoreString *str, const QoreListNode *args, ExceptionSink *xsink)
signature for the DBI "execSQL" method - must be defined in each DBI driver
Definition DBI.h:178
 
int(* q_dbi_stmt_exec_t)(SQLStatement *stmt, ExceptionSink *xsink)
execute statement
Definition DBI.h:255
 
QoreHashNode *(* q_dbi_select_row_t)(Datasource *ds, const QoreString *str, const QoreListNode *args, ExceptionSink *xsink)
signature for the DBI "selectRow" method - must be defined in each DBI driver
Definition DBI.h:168
 
QoreStringNode *(* q_dbi_get_driver_real_name_t)(Datasource *ds, ExceptionSink *xsink)
signature for the "get_driver_real_name" method
Definition DBI.h:235
 
int(* q_dbi_stmt_prepare_raw_t)(SQLStatement *stmt, const QoreString &str, ExceptionSink *xsink)
prepare statement with no bind parsing
Definition DBI.h:245
 
QoreValue(* q_dbi_select_t)(Datasource *ds, const QoreString *str, const QoreListNode *args, ExceptionSink *xsink)
signature for the DBI "select" method - must be defined in each DBI driver
Definition DBI.h:147
 
QoreValue(* q_dbi_select_rows_t)(Datasource *ds, const QoreString *str, const QoreListNode *args, ExceptionSink *xsink)
signature for the DBI "selectRows" method - must be defined in each DBI driver
Definition DBI.h:157
 
int(* q_dbi_begin_transaction_t)(Datasource *ds, ExceptionSink *xsink)
signature for the DBI "begin_transaction" method, should only be defined for drivers needing this to ...
Definition DBI.h:211
 
DLLEXPORT DBIDriverList DBI
list of DBI drivers currently reigsted by the Qore library
 
int(* q_dbi_stmt_bind_t)(SQLStatement *stmt, const QoreListNode &l, ExceptionSink *xsink)
bind input values and optionally describe output parameters
Definition DBI.h:250
 
int(* q_dbi_commit_t)(Datasource *ds, ExceptionSink *xsink)
signature for the DBI "commit" method - must be defined in each DBI driver
Definition DBI.h:195
 
int(* q_dbi_open_t)(Datasource *ds, ExceptionSink *xsink)
signature for the DBI "open" method - must be defined in each DBI driver
Definition DBI.h:130
 
int(* q_dbi_close_t)(Datasource *ds)
signature for the DBI "close" method - must be defined in each DBI driver
Definition DBI.h:137
 
QoreValue(* q_dbi_get_server_version_t)(Datasource *ds, ExceptionSink *xsink)
signature for the "get_server_version" method
Definition DBI.h:219
 
int(* q_dbi_stmt_affected_rows_t)(SQLStatement *stmt, ExceptionSink *xsink)
get number of affected rows
Definition DBI.h:260
 
QoreValue(* q_dbi_execraw_t)(Datasource *ds, const QoreString *str, ExceptionSink *xsink)
signature for the DBI "execRawSQL" method - must be defined in each DBI driver
Definition DBI.h:187
 
DLLEXPORT int DBI_concat_string(QoreString *str, QoreValue v, ExceptionSink *xsink)
concatenates a string value to the QoreString from the value
 
int(* q_dbi_stmt_prepare_t)(SQLStatement *stmt, const QoreString &str, const QoreListNode *args, ExceptionSink *xsink)
prepare statement and process placeholder specifications and bind parameters
Definition DBI.h:240
 
DLLEXPORT QoreHashNode * parseDatasource(const char *ds, ExceptionSink *xsink)
parses a datasource string and returns a hash of the component parts
 
this class provides the internal link to the database driver for Qore's DBI layer
Definition DBI.h:367
 
DLLEXPORT QoreHashNode * getOptionHash() const
returns the valid options for this driver with descriptions
 
DLLEXPORT bool hasStatementAPI() const
returns true if the driver supports the statement API
 
DLLEXPORT const char * getName() const
this is the only public exported function available in this class
 
this class is used to register and find DBI drivers loaded in qore
Definition DBI.h:409
 
DLLEXPORT DBIDriver * find(const char *name) const
finds a driver, will try to load the driver using the ModuleManager if no such driver is already pres...
 
DLLEXPORT DBIDriver * registerDriver(const char *name, const qore_dbi_method_list &methods, int caps)
registers a new DBI driver
 
DLLEXPORT DBIDriver * find(const char *name, ExceptionSink *xsink) const
finds a driver, will try to load the driver using the ModuleManager if no such driver is already pres...
 
the base class for accessing databases in Qore through a Qore DBI driver
Definition Datasource.h:55
 
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition ExceptionSink.h:50
 
This is the hash or associative list container type in Qore, dynamically allocated only,...
Definition QoreHashNode.h:51
 
This is the list container type in Qore, dynamically allocated only, reference counted.
Definition QoreListNode.h:52
 
contains constants, classes, and subnamespaces in QoreProgram objects
Definition QoreNamespace.h:65
 
Qore's string type supported by the QoreEncoding class.
Definition QoreString.h:93
 
Qore's string value type, reference counted, dynamically-allocated only.
Definition QoreStringNode.h:50
 
This is the public class for DBI drivers supporting Qore's new prepared statement API.
Definition SQLStatement.h:38
 
this is the data structure Qore DBI drivers will use to pass the supported DBI methods
Definition DBI.h:304
 
The main value class in Qore, designed to be passed by value.
Definition QoreValue.h:279